[转载]Web性能优化:图片优化 - 前端兔子喵 - 博客园

mikel阅读(882)

[转载]Web性能优化:图片优化 – 前端兔子喵 – 博客园.

web image optimization

HTTP Archieve有 个统计,图片内容已经占到了互联网内容总量的62%,也就是说超过一半的流量和时间都用来下载图片。从性能优化的角度看,图片也绝对是优化的热点和重点之 一,Google PageSpeed或者Yahoo的14条性能优化规则无不把图片优化作为重要的优化手段,本文覆盖了Web图片优化的方方面面,从基本的图片格式选择、 到尚未被广泛支持的响应式图片均有所提及。

Google Web Fundamentals的说法我很喜欢:

图片优化既是一门艺术,也是一门科学,图片优化是一门艺术,是因为单个图片的压缩不存在最好的特定性方案,而图片优化之所以是一门科学,是因为许多 开发得很出色的方法和算法可以明显减小图片的大小。要找到图片的最优设置,需要按照许多维度进行认真分析:格式能力、编码数据内容、像素尺寸等。

真的要用图片吗?

要实现需要的效果,真的需要图片吗?这是首先要问自己的问题。浏览器和Web标准的发展速度极快,记得数年前我在用微软Silverlight 1.0写视频播放器的时候,中文还不能使用自定义字体显示,所以那时候写了很多糟糕的代码把需要的文字在服务器上生成图片并缓存起来。用户下载起来很慢, 搜索引擎也完全无法检索这些文字。

但是现在不一样了,很多特效(渐变、阴影、圆角等等)都可以用纯粹的HTML、CSS、SVG等加以实现,实现这些效果少则寥寥数行代码,多则加载额外的库(一张普通的照片比非常强大的效果库也大了许多)。这些效果不但需要的空间很小,而且在多设备、多分辨率下都能很好的工作,在低级浏览器上也可以实现较好的功能降级。因此在存在备选技术的情况下,应该首先选择这些技术,只有在不得不使用图片的时候才加入真正的图片。

备选技术

  • CSS效果、CSS动画。提供与分辨率无关的效果,在任何分辨率和缩放级别都可以显示得非常清晰,占用的空间也很小。
  • 网络字体。现在连很多图标库都是用字体方式提供,保持文字的可搜索性同时扩展显示的样式。

前端工程师最好能和设计师、产品经理保持沟通,帮助他们了解到什么样的效果比较“简洁、高效、可维护”,毕竟对 于CSS来说改变圆角矩形的Radius可以实时看到效果,用图片的话至少要重新生成图片、切图并替换资源。Retina、高分辨率屏幕、多尺寸的设备, 这些都加快了非图片特效的发展,想想在高分辨率屏幕下Windows 7的惨不忍睹,就知道原生的图片资源绝对不是多多益善。

图片格式的选择

如果效果真的需要图片来表现,那么选择图片格式是优化的第一步。我们经常听到的词语包括矢量图、标量图、SVG、有损压缩、无损压缩等等,我们首先说明各种图片格式的特点

图片格式 压缩方式 透明度 动画 浏览器兼容 适应场景
JPEG 有损压缩 不支持 不支持 所有 复杂颜色及形状、尤其是照片
GIF 无损压缩 支持 支持 所有 简单颜色,动画
PNG 无损压缩 支持 不支持 所有 需要透明时
APNG 无损压缩 支持 支持 Firefox
Safari
iOS Safari
需要半透明效果的动画
WebP 有损压缩 支持 支持 Chrome
Opera
Android Chrome
Android Browser
复杂颜色及形状
浏览器平台可预知
SVG 无损压缩 支持 支持 所有(IE8以上) 简单图形,需要良好的放缩体验
需要动态控制图片特效

其中APNG和WebP格式出现的较晚,尚未被Web标准所采纳,只有在特定平台或浏览器环境可以预知的情况下加以采用,虽然均可以在不支持的环境中较好的功能降级,但本节暂不讨论这两种格式。图片格式选择过程如下:

image optim

颜色丰富的照片,JPG是通用的选择

  • 人眼的结构很适合查看JPG压缩后的照片,可以充分的忽略并在脑中补齐细节
  • JPG在压缩率不高时保留的细节还是不错的
  • WebP能够比JPG减少30%的体积,但目前兼容性较差

如果需要较通用的动画,GIF是唯一可用的选择

  • GIF支持的颜色范围为256色,而且仅支持完全透明/完全不透明
  • GIF在显示颜色丰富的动画时可能出现颜色不全、边缘锯齿等问题

如果图片由标准的几何图形组成,或需要使用程序动态控制其显示特效,可以考虑SVG格式

  • SVG是使用XML定义的矢量图形,生成的图片在各种分辨率下均可自由放缩
  • SVG中可以通过JavaScript等接口自由变换图片特效,可以完成其中部分元素的自由旋转、移动、变换颜色等

如果需要清晰的显示颜色丰富的图片,PNG比较好

  • PNG-8能够显示256种颜色,但能够同时支持256阶透明,因此颜色数较少但需要半透明的情景(如微信动画大表情)可以考虑PNG-8
  • PNG-24可以显示真彩色,但不支持透明,颜色丰富的图片推荐使用(如屏幕截图、界面设计图)
  • PNG-32可以显示真彩色,同时支持256阶透明,效果最好但尺寸也最大

图片尺寸的选择

尺寸,曾经是最不需要讨论的话题,但自从Retina出现之后世界就变得复杂多了。关于移动设备上的像素和尺寸,展开说足够写一篇论文,我建议想详细了解的同学参考下面的文章:

浅谈移动Web开发(上):深入概念

这里只说我们关心的部分和结论,我们需要分清不同类型的像素:CSS像素和设备像素。一个 CSS像素可能包含多个设备像素。对于图片来说,在高DPI的屏幕上需要使用分辨率更高的图片,如果我们讨论的是Retina,那么就需要2倍分辨率(几 乎4倍尺寸)的图片。这几乎没有取巧的空间,屏幕就是那么大,需要的图片也就是那么大。(鸽子为什么那么大?^_^)

kraken

我们能够控制的地方是“恰好”显示所需尺寸的图片。例如在屏幕中通过CSS或者标签的wihth/height属性,将一副200×200的图片调整为100×100大小,那么这其中就有(200×200)-(100×100)=30000个像素是浪费的,这占到了图片尺寸的75%!

之所以有这么大的浪费,是因为图片的尺寸与面积基本成正比,与宽高的平方成正比。因此良好的计算客户端实际显示的图片尺寸,能够大大减小图片的大小。即使只有长和宽都只有10px被浪费,但是当图片足够大时,这部分也将产生很大影响。

响应式图片

上面提到“恰好”显示客户端所需大小的图片,听上去很容易不是吗?但当响应式布局出现后,这就变得极其困难。我们要支持上至1920宽度,下至 320宽度的无数种设备,如果使用1920宽度的图片,那么在小型设备(这类设备往往对网速和流量更加敏感)上每个用户都要付出额外的带宽和等待时间,如 果使用320宽度的图片,那么在1920的屏幕上就像是在高清屏上使用DOS那么让人难以接受。

很自然的,我们需要图片也能“响应式”加载,根据所在设备的不同,加载不同尺寸的图片。响应式图片尚没有写入Web标准,实现起来也有诸多不便和兼容性限制。我建议参考百度EFE团队的这篇文章:

实战响应式图片

响应式图片虽然尚未成为标准,但这是Web图片优化的一柄利器,一旦被广泛支持,再没有比缩小图片尺寸更有效的优化方法了。

优化JPG和PNG

选择了正确的图片格式,按照正确的大小生成了图片后,我们还需要对图片进行进一步优化,这种优化一般分两步进行:

  1. 有损优化,删除没有出现或极少出现过的颜色,合并相邻的相近颜色。这一步并不必须,如PNG格式就直接进入下一步
  2. 无损优化,压缩数据,删除不必要的信息

JPG和PNG格式的图片生成后,一般还有进一步优化的空间,例如JPG格式的照片中,可能携带有相机的Exif信息,PNG格式的图片中可能带有 Fireworks等软件的图层信息等。去除这些额外信息后,还可以通过减小图片的调色板,去除没有出现过的颜色,以及合并相邻的相同颜色等手段来进行优 化。原理性的内容这里不再赘述,仅介绍工程中可用的优化工具。

不同格式的图片有一系列工具,这些工具有有更多种参数调节方案,常见的几种调节工具有:

工具 用途
jpegtran 优化JPG图片
OptiPNG 无损PNG优化
AdvPNG 无损PNG优化
PNGQuant 有损PNG优化

如果你真的需要追求各种图片的极限压缩,可以参阅这些工具的文档,但是对于一般的Web应用,面对的图片种类多样,几乎不可能在工程中实现对每种工具的独立配置,因此推荐使用以下工具来进行优化。这些工具往往使用了上表中的一种或几种优化工具。

ImageOptim (Mac)

主页:https://imageoptim.com/

Mac平台下非常赞的图片优化工具,只需要把需要优化的图片拖拽进ImageOptim,就能够完成对图片的优化。设置选择的也很丰富,目前支持JPG和PNG的优化。这是我在写文章时最常用到的工具,把网站用到的图片拖进去,优化就完成了~

image optim

Kraken (Web)

主页:https://kraken.io/

在免费模式下可以上传图片,优化后打包下载,很多国外企业也选择了它的收费服务。亲自测试Kraken的图片优化结果比ImageOptim一般要小3%左右,效果不错,当然价格也不错。适合偶尔有图片优化需求,或者不在开发机上没有优化软件可以使用的情况。

kraken

智图 (Web)

主页:http://zhitu.tencent.com/

腾讯ISUX团队有篇文章介绍智图:http://isux.tencent.com/zhitu.html

国货当自强,腾讯的智图工具推出不久,但实测效果很好,而且提供了Gulp的自动化支持,这部分会在后面自动优化章节介绍。只想建议一句,Kraken的首页比智图美好几百倍…… 而且把压缩前的PNG和压缩后的JPG放在一起对比大小,真的没关系么~

kraken

优化SVG

所有较新的浏览器都支持可缩放矢量图(SVG),SVG是基于XML的图片格式,适用于二维图片。可以将SVG标记直接嵌入网页,也可以作为外部资源嵌入。可以通过大多数基于矢量的绘图软件创建SVG文件。这是一段简单的SVG图形:

kraken

这个圆形轮廓为黑色,背景为红色,从Adobe Illustrator直接导出。可以从中看到大量元数据,例如图层信息、注释和XML名称空间等等,在浏览器中呈现资源时,通常不需要这些数据。因此我们需要使用一些工具去除这些不必要的元数据,仅保留必须的标记。

SVGO工具可以缩减SVG文件的体积,在这个的例子中,SVGO能够将Illustrator生成的SVG文件大小减小58%,从470字节缩减到199字节。

由于SVG是基于XML的格式,本质上是纯文本,所以,还可以采用GZIP压缩来减小传输大小,当然这需要一些服务器配置,例如在apache服务器中设置:

AddType image/svg+xml .svg
AddOutputFilterByType DEFLATE image/svg+xml

来对SVG文件启用GZip压缩(当然你还需要先加载deflate模块并进行适当配置,GZip的配置超出了本文的范畴,这部分内容请自行Google)

优化GIF和APNG

GIF有很多好处,在颜色数较低的时候能够大幅减小图片体积,而且他也是唯一能够较为通用的展示动画的图片格式。关于GIF格式的优化原理我并不熟悉,只是在工程中直接使用成型的压缩工具,在后文自动优化章节的Grunt中,会介绍通过Grunt Task进行自动优化的方法。

关于APNG,目前浏览器对他的支持还不够好,不过在支持HTML5的场景中,有成熟的开源工具apng-canvas可以用于支持APNG。

kraken

腾讯ISUX团队有篇文章介绍iSparta工具:http://isux.tencent.com/introduction-of-apng.html。这是目前几乎唯一能够批量处理APNG文件的工具,感兴趣的同学可以在那篇文章里得到更多地了解。

自动优化

前面说了太多关于如何优化各种不同格式图片的方法和工具,优化图片需要大量重复性的劳动,作为工程师显然不会忍受这一点,因此也产生出了很多工具对图片进行自动优化,这里主要介绍CDN、Grunt/Gulp、Google PageSpeed三种方式。

自动优化:CDN

使用CDN对图片自动进行优化,我在国外的CDN提供商处很少见到这类服务,倒是国内的两大新秀CDN七牛又拍在这方面都做了大量工作。其工作方式为,向CDN请求图片的URL参数中包含了图片处理的参数(格式、宽高等),CDN服务器根据请求生成所需的图片,发送到用户浏览器。

七牛云存储的图片处理接口极其丰富,覆盖了图片的大部分基本操作,例如:

  • 图片裁剪,支持多种裁剪方式(如按长边、短边、填充、拉伸等)
  • 图片格式转换,支持JPG, GIF, PNG, WebP等,支持不同的图片压缩率
  • 图片处理,支持图片水印、高斯模糊、重心处理等

七牛云存储的图片处理接口使用并不复杂,例如下面这张原图:

我们通过如下URL请求,裁剪正中部分,等比缩小生成200×200缩略图:

http://qiniuphotos.qiniudn.com/gogopher.jpg?imageView2/1/w/200/h/200

自动优化:Grunt/Gulp

这里介绍用于图片优化的Grunt组件:grunt-image。前端工程师的重复性工作,例如合并静态资源、压缩JS和CSS文件、编译SASS等都可以使用Grunt等自动化工具批量完成,图片优化也是如此。

grunt-image非常强大,按照作者的介绍,其内部加载的图片优化工具包括了pngquant, optipng, advpng, zopflipng, pngcrush, pngout, mozjpeg, jpegRecompress, jpegoptim, gifsicle和svgo。支持批量自动优化PNG, JPG, SVG和GIF,速度也不错,配置方式支持单图片优化和全目录优化:

module.exports = function (grunt) {
  grunt.initConfig({
    image: {
      // 指定单独的图片优化
      static: {
        options: {
          pngquant: true,
          optipng: true,
          advpng: true,
          zopflipng: true,
          pngcrush: true,
          pngout: true,
          mozjpeg: true,
          jpegRecompress: true,
          jpegoptim: true,
          gifsicle: true,
          svgo: true
        },
        files: {
          'dist/img.png': 'src/img.png',
          'dist/img.jpg': 'src/img.jpg',
          'dist/img.gif': 'src/img.gif',
          'dist/img.svg': 'src/img.svg'
        }
      },
      // 指定图片目录进行优化
      dynamic: {
        files: [{
          expand: true,
          cwd: 'src/',
          src: ['**/*.{png,jpg,gif,svg}'],
          dest: 'dist/'
        }]
      }
    }
  });

  grunt.loadNpmTasks('grunt-image');
};

web image optimization

自动优化:Google PageSpeed

Google做事风格比较彻底,看见哪个软件不好用就拿来直接fork出新版本或者干脆重写,对于Web优化,Google发布了了Google PageSpeed这个服务器模块,可以在apache或ngnix中加载,通过在服务器配置文件中进行设置来进行自动化的优化。对于图片格式转换、图片优化甚至图片LazyLoad都有相关选项。这部分展开会非常长,请感兴趣的同学参考Google的手册。

参考链接

题图来自:http://www.curata.com/blog/optimizing-your-content-marketing-with-secrets-exposed-in-recent-google-patent/

[转载]20套最新的扁平界面设计素材【免费下载】 - 梦想天空(山边小溪) - 博客园

mikel阅读(990)

[转载]20套最新的扁平界面设计素材【免费下载】 – 梦想天空(山边小溪) – 博客园.

Minimal UI Kit

20 Fresh Flat UI Designs Free to Download

Psd Flat Ui Kit

20 Fresh Flat UI Designs Free to Download

Android L GUI KIT

20 Fresh Flat UI Designs Free to Download

White Stripes UI Kit – Free PSD

20 Fresh Flat UI Designs Free to Download

Just another UI Kit

20 Fresh Flat UI Designs Free to Download

Soft Flat UI Kit

20 Fresh Flat UI Designs Free to Download

Free Flat UI Kit by Dee-Dee

20 Fresh Flat UI Designs Free to Download

Summer Ui Kit Free

20 Fresh Flat UI Designs Free to Download

Free PSD UI Kit

20 Fresh Flat UI Designs Free to Download

Flat UI Elements Freebie

20 Fresh Flat UI Designs Free to Download

Business UI KIT (Free PSD)

20 Fresh Flat UI Designs Free to Download

Free Flat UI Kit

20 Fresh Flat UI Designs Free to Download

Flat UI kit (psd)

20 Fresh Flat UI Designs Free to Download

Modern Touch UI Kit

20 Fresh Flat UI Designs Free to Download

Free PSD: Webapp Profile

20 Fresh Flat UI Designs Free to Download

Freebie PSD: Flat UI Kit

20 Fresh Flat UI Designs Free to Download

Flat-Transparent UI Kit

20 Fresh Flat UI Designs Free to Download

Blog/Magazine UI Kit #2

20 Fresh Flat UI Designs Free to Download

Flat Winter UI Kit

20 Fresh Flat UI Designs Free to Download

Coloristico Flat Ui Kit

20 Fresh Flat UI Designs Free to Download

[转载]ThinkPHP中实例化对象M()和D()的区别_零度_PHP_新浪博客

mikel阅读(1033)

[转载]ThinkPHP中实例化对象M()和D()的区别_零度_PHP_新浪博客.

ThinkPHP中实例化对象M()和D()的区别?ThinkPHP如何实例化对象?
在实例化的过程中,经常使用D方法和M方法,这两个方法的区别在于M方法实例化模型无需用户为每个数据表定义模型类,如果D方法没有找到定义的模型类,则会自动调用M方法。
通俗一点说:
M实例化参数是数据库的表名。
D实例化的是你自己在Model文件夹下面建立的模型文件

例如:$user = new UserModel();

 

等价于$user = D(‘user’);

 

如果实例化的是一个空模型

 

例如 $Demo = new Model();

 

那么它等价于 $Demo = M();

————————————————————————
D和M的区别主要在于:
M方法不需要创建模型类文件,M方法不会读取模型类,所以默认情况下自动验证是无效的,但是可以通过动态赋值的方式实现
而D方法必须有创建模型类。

我们可以用下面两种方法去创建一个数据表的映射对象
第一种:$Test = D(‘Test’)
第二种:$Test = new Model(‘Test’)
虽然这两种都可以对数据进行select,insert,delete,udpate操作,在
数据验证上有很大的不同,用第一种方式实例一个模型就会有数据检查功能,如果 title 没有填写的话就会提示 “请输入标题” (这个是tp提供的一个自动验证功能,当然也需要在相应的model中定义好验证条件);

如果用第二种就没有了·····

还有1个区别就是当用了$trueTableName后,必须用$test=d(‘test’),表示查询的是test表,

如果用的是$test=m(‘test’),那么都表示查询的数据边是think_test。

thinkphp2.0版本测试有如此上面的问题
———————————————————————————————–
通俗点说:
D就是实例化一个基于Model文件的Model。
M则是通过直接实例化Model方法(ThinkPHP基类)来动态的实例化一个Model对象,即使这个对应的Model文件不存在

============================================================================
A快速实例化Action类库
B执行行为类
C配置参数存取方法
D快速实例化Model类库
F快速简单文本数据存取方法
L 语言参数存取方法
M快速高性能实例化模型
R快速远程调用Action类方法
S快速缓存存取方法
U URL动态生成和重定向方法
W 快速Widget输出方法

D函数实例化的是你当前项目的Lib/Model下面的模块。
如果该模块不存在的话,直接返回实例化Model的对象(意义就与M()函数相同)。
而M只返回,实例化Model的对象。它的$name参数作为数据库的表名来处理对数据库的操作。

[转载]C# 下载图片到本地 - zhanggang - 博客园

mikel阅读(1132)

[转载]C# 下载图片到本地 – zhanggang – 博客园.

先建立一个类文件,然后建立函数,调用它就可以下载图片。

using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Net;
using System.Text.RegularExpressions;
using System.Windows.Forms;

namespace Spider
{
class DocumentWorker
{
///
/// Download a page
///

/// The data downloaded from the page

public void saveimage()
{
WebClient mywebclient = new WebClient();
string url = "http://images.google.cn/intl/zh-CN_ALL/images/images_hp.gif";
string newfilename = DateTime.Now.Year.ToString() + DateTime.Now.Month.ToString() + DateTime.Now.Day.ToString() + DateTime.Now.Hour.ToString() + DateTime.Now.Minute.ToString() + DateTime.Now.Second.ToString() + ".jpg";
string filepath = @"F:\" + newfilename;
try
{
mywebclient.DownloadFile(url, filepath);
//filename = newfilename;
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}

}
}

[转载]异步线程调用之task await关键字 - 鸣动我心 - 博客园

mikel阅读(922)

[转载]异步线程调用之task await关键字 – 鸣动我心 – 博客园.

有这样一个场景:一个异步方法a,被foreach循环b调用,这个时候,还没来得及处理异步返回的数据c,就会执行下一个循环,

所有循环b执行完的时候,再次回到异步方法a会因为void关键字,捕捉不到先前的数据c

eg:

private void GetSecondinfo(IEnumerable info)
{
foreach (var info1 in info)
{
SecondResult(info1.category);
}
}

private async void SecondResult(string category)
{
string url = "http://xxx" + category;
string content = await PublicMethod.AsyncCallbac1(url);
//foreach执行完了才会执行下面方法,但是这个时候因为void关键字的原因,content已经为null
if (!string.IsNullOrEmpty(content))
{
//json解析
}
}

分析看来,关键字void很重要,所以我们的处理方法就有2种:

第一种,改造2个方法为一个,把第二个方法挪到里面去。因为foreach await后会执行下一个判断操作,而非继续下一个循环,所以可以解决问题,

注意要把同步方法改成异步,即加async。这样的处理逻辑是:foreach循环的时候,异步请求网络,接着json解析完,然后开始第二轮foreach循环。

eg:

private async void GetSecondinfo1(IEnumerable info)
{
foreach (var info1 in info)
{
string url = "http://xxx" + category;
string content = await PublicMethod.AsyncCallbac1(url);
//foreach执行完了才会执行下面方法,因为没有别的方法调用,只能执行下面方法
if (!string.IsNullOrEmpty(content))
{
//json解析
}
}
}

 第二种方法:因为知道 是void导致的问题(具体原因不知道,可能是void关键字默认屏蔽所有值),关于异步方法,可以改void为task。此为群里朋友提供的方法,

这样处理的逻辑是:foreach的时候,异步请求网络,不等结果,继续去请求第二个线程,最后一刻处理json解析

eg:

private void GetSecondinfo(IEnumerable info)
{
foreach (var info1 in info)
{
SecondResult(info1.category);
}
}
private async Task SecondResult(string category)
{
string url = "http://xxx" + category;
string content = await PublicMethod.AsyncCallbac1(url);
//foreach执行完了才会执行下面方法,但是这个时候因为木有void,而是task,所以content不会为因为执行了异步操作而空;
if (!string.IsNullOrEmpty(content))
{
//json解析
}
}

[转载]C#遍历DataSet - 游乐场123 - 博客园

mikel阅读(1033)

[转载]C#遍历DataSet – 游乐场123 – 博客园.

C#中的Dataset就像一个数据库,有多个表(Table),一般只有一个表,然后每个表中有行(DataRow)和列(DataColumn),DataRow[DataColumn]可以得到某行某列数据。

foreach (DataTable dt in YourDataset.Tables)
{
    foreach (DataRow dr in dt.Rows)
        foreach (DataColumn dc in dt.Columns)
            Console.WriteLine("{0}, {1}, {2} ", dt.TableName, dc.ColumnName, dr[dc]);
        }

[转载]使用DataSet的ReadXml和WriteXml方法 - 张逸 - 博客园

mikel阅读(939)

转载使用DataSet的ReadXml和WriteXml方法 – 张逸 – 博客园.
使用这两个方法可以很方便地对xml文件和数据表进行交换,但前提是xml文件要符合一定的格式。

例如有如下的xml文件: Author.xml

<?xml version="1.0" encoding="utf-8" ?>
 <Authors_Table>
 <authors>
  <au_id>172-32-1176</au_id>
  <au_lname>White</au_lname>
  <au_fname>Johnson</au_fname>
  <phone>408 496-7223</phone>
  <address>10932 Bigge Rd.</address>
  <city>Menlo Park</city>
  <state>CA</state>
  <zip>94025</zip>
  <contract>true</contract> 
  </authors>
  </Authors_Table>

其中,节点代表数据表的名字,其下的则为各表的列名。
如果这个文件放到E盘的根目录下,则可以通过下面简单的代码来实现:

   string filePath=@“e:\authors.xml“;
DataSet ds = new DataSet(“Authors“);
ds.ReadXml(filePath);

//dgAuthors是一个DataGrid控件;
dgAuthors.DataSource=dsAuthors;
dgAuthors.DataMember="authors";
dgAuthors.CaptionText=dgAuthors.DataMember;

但由于受到xml样式的限制,对于复杂的xml文件(或不符合其标准的xml文件),使用上述的方法就不能实现了。为看看DataSet对xml的支持,我就尝试将SQL Server下的NorthWind数据库中的Employees表,通过WriteXml方法写入到文件中,结果出现以下的结果:

<?xml version="1.0" standalone="yes" ?>
 <DataSet1 xmlns="http://www.tempuri.org/DataSet1.xsd">
<Employees>
  <Expr1>1</Expr1>
  <Expr2>Davolio</Expr2>
  <Expr3>Nancy</Expr3>
  <Expr4>Sales Representative</Expr4>
  <Expr5>Ms.</Expr5>
  <Expr6>1948-12-08T00:00:00.0000000+08:00</Expr6>
  <Expr7>1992-05-01T00:00:00.0000000+08:00</Expr7>
  <Expr8>507 - 20th Ave. E. Apt. 2A</Expr8>
  <Expr9>Seattle</Expr9>
  <Expr10>WA</Expr10>
  <Expr11>98122</Expr11>
  <Expr12>USA</Expr12>
  <Expr13>(206) 555-9857</Expr13>
  <Expr14>5467</Expr14>
  <Expr15>FRwvAAIAAAANAA4AFAAhAP////9CaXRtYXAgSW1hZ2UAUGFpbnQuUGljdHVyZQABBQAAAgAAAAcAAABQQnJ1c2gAAAAAAAAAAAAgVAAAQk0gVAAAAAAAAHYAAAAoAAAAwAAAAN8AAAABAAQAAAAAAKBTAADODgAA2A4AAAAAAAAAAAAAAAAAAAAAgAAAgAAAAICAAIAAAACAAIAAgIAAAMDAwACAgIAAAAD/AAD/AAAA//8A/wAAAP8A/wD//wAA////AP8MsMkACwkJAAAKAJAJAAAAAAkJoJqQCwkACpCgAAAAD//v///////////LnPz++v/////t//7e/97+/P//2toA2QAAkAkAkAAAAAAJCgAJC8AACQCQAAAACgCsoODg4PDpypAAqcsMAACQkOAAAAkJCwAA0AkAkAAACQAAmgAP///////+//////yt69vf39//////7+3//v////78rwyaCg0AAJoAAAAAAAAACQkKAAsAmpAACQAAkAwJAJAJAPqQraAAkLALAAAAAJAACQAAAJAJqbAJAJoAAAAAwAC//////v///////8+fvL77/+v////+/f/+/f/P/v/5vAsAkJAAkAAJAAAAAAAAkAAAkJAJoMCwAACwAAmgDg4ODvytoMkAAMsAkAAAmpoJoACwCQCQkA0AqQkACQkKAAD////+//7///////Dw/9/trf3//////v797+/8/e/sDwyawAoAoJAAAACQAAAACQqQCgAAkJAACgAADKAMCQCQkPkA2gCakADaANAAAAnAkAAAkLAAqamwkAAAAKwAAAv/7///////////7anfD/n////w//////3+/97/79/5qaAJCQkAkACQAAAAAAAJCpAAkJqQAKkNCQAAqQALDgysoPrpqcoACpmpCwAAAJCwAJCQAAkAkNAACakAAJAAAJ/////////v///+2t68/e/9ra3//////+/vy+/e2+/K0NDgCgAAAJAAAAAAAACQCQCQAAAACQAKAACQAAAAAJqQDfCQypAJCQ6QkAsACQqQCQAAkLAJoJqQkJAACQsACf///////v/////9CenPv78P///v/e/////9/9/r/v2pCwqQkAqQCQAAAAAAAAAAAAAAkJAAkKkJAAoAAKywCwwOCvDwvAkAAAmtqQkAAAkPAACQCQkAmQmpoJAAAAAAAP/+///v/+/+///qnp+/3t//3//f///P///v7+38/e/AANAACQAAAAAAAAAAAAAAkAkACgCQCQAAsAkAAJAAwAoJwP8PC8oLCgAJDwqakACQsJAJAAkAALDQkKkAAJoAC//////////////Q+enw++8Pr8v+/9//////3/r/r577wKnAoAkJAAkAAAAAAJAAAAAAkAAAAAsAAAAKAAAAsMkKAPCw8AnAAJAAsAnAALAK0ACwCZqQmpCwCZAAAAnAD////+//7/7///ypDw/P/f3/3//f2+//3///78/P3+/ACQCpAAAAoJAAAAAAAAAACwAJAJAAAJAJCayQAAqQAKDAnPAPANoAkAAJCfC5CcAJmgkAmgAAAJCQmgCQAJoJ//////////3//umc8P2+nvr8vp777//ev9v////w/t8KkK0ACQCQkAAAAAAAAAAAkAkAAAAAAACaAJAAkAANoJAKCvra2wCayQAAAAkACpAJrQAJAJCQm8sJyZAAkACa//////7//v7+/9rLD9rf+9+f/f39/f///+///+/PD77Q6QCcAAAAAAAAAAAAAAAAAAAACQAAAAAAmgAAAJCwwA6cAP2pDprJoKkKkKmpCa0Am5AK0KkACQkLCpAAAJC9/////////////AmtCw8L7a/p76++v9r9//2//////P/pAJoLAAAAkKkAAAAAAAAAkAkAAAAAAAkACbAAAAAAsAAK0PreuekADQAJAJDQsJmpoPCQCQCQkLCQmQAAAACe///////v//z/wPDa/Pn9n9+f+f39/v//79/t///vz/7engkAAJAAAJAAAAAAAAAAAAAJAJAAAAAJnACQAADwAAkAAP263K2pAKkAAACwCcqcCZoAsAkKnpALAKAAkAn7/////v//7+/8CwmtCa3r7+nvD8vvn73//////////+/wAJAAkAAJAAAAAAAAAAAJAJAAAACQCQCaCpAAAAkAAArKCvrtq/mtqQDanJCempmpyamZCQCQCQmQmQAAAAC8//////7//f/LwPDantv9+f+d+/+f7f/r3/7b///+///sCaywAAAACQkAAAAAAAAAAACQCQAAAJAAkAAAkACgAAAA0P2+2s+8vLoJoKAJCaybqZ4KmpAJCwC8qQAAAACb/////////v8AkJ6cue2vzw/rzw/p+8/f+///z///////4JAJAAAAoAAAAAAAAAAAAAAAAAAAAACaCQkAAJCQAAAAC//p/byem8kAkJkAsJsNmgmZwACQkJoJCQAAkAkP///+///v//yQqQCw2tvfv/29uf2/z/v/7f2/+//////+kAsMAJCQkAkAAAAAAAAAAJAAAAkAAArQkKAAmgAAAJCaCfn/6+vr2tutC8oJwLywvJsAqQkLDwmQsAAAAAC5///////978oMnK0Nrb6+2tvtr8v8vbz9/+/8/f/////tAACakAAAAJAAAAAAAAAAAAAAAAAAAJAAAJCQAADwkAAA2v6tv9vfD60KkJCwsAkLC9C5kAAAkAAJAAAAkAkP/////v/v/9CaAJCw8P35/+2/37y///+v+//7+///////4JAAAAAAkAAAAAAAAAAAAAAAAAAAAAkAkAAAkJAAAAqamvna2vy/vL+fCw8JC5qckLkOkJCQuQmwkAAAAACQv/7/////7+AJCa0Ly9r+n9vL6f/a2v35/f3/z5//////wAAJCQkACwCQAAAAAAAACQAAAJAACaAJqQAAAAsJ4JAMkP6trfvw29rwvAkPkAALCw25CwAJAAAJCwAAAAAJ///////v/wkMCsmtva/b/r7/3/D//9v/7/v//+/////+sAAACgAAAAAAAAAAAAAAAAAAAAAAsJAAAAkAmpAAAACQqfDfrw/p6+vb6bCwvAkL0JqakAmpAJCwAAAACQCb////7//9/AAKkJD5772+2/35/p/72+//2/z/n5/////9AAAACQAJCQAAAAAAAAAAAAAAAAAJwAAKkJoAAACQCaAKnP6g0P2/vJytvwkNCwCZCwm56QCQsAkJCQAAAAAAD+/////v7wAJDa8Pnt7b/Pv+n/rf79/L/////vn////+kAAJAAAAAAkAAAAAAAAAAAAAAAkLAAAJAAAAsPCgAA8NC/3/r6/tv7+envC6mtoKnJrQmgkACQAAAAAAAAAJvf///+///gkAqQnw+/v9v97//9/737//6f29+f7/////wJAAAJAAAAAAAAAAAAAAAAAAAADwAACQmpCQCQkJrQAAAPvv3/2/6empub0J25DQmwkLkJAJAAsJCQAAAJCQD//v////7QANDLy9re3v//+f2v+f/t+f3+/v//n5///5sAAAAACQCQAAAAAAAAAAAAAAAAsJAAkACQAAnwrAAACgvPzwvtr/n5rfD/qasAsJ6amp6QCQkAkAAAAAAAAA++/////t8AkAmw8P37+/y9/+/97+37/++/n73w/+///+AAAAAAAAAAAAAAAAAAAAAAAACfAAAAAJvKkAsAkJoK0NCfqeya+e8K260L35yfCwkJCZmpAKCQAACQAAAAAJCf///+/+/ACw4Pn/r9/f//r9v/vfvfz5/P/fv/vb///9mgAAsAAAAJAAAAAAAAAAAAALywsAAAmgCQAJ6eAACQCgoP/L/tr5v9rbvwsLsJnanwvLDQAJAJCQAAAAAACQsN//7///8AAJnw8P36/r3/3//P///r//+968+fy9rf/60AAAAAAAAAAAAAAAAAAAAAAAkNAACQCQsAnwkJCwDAkNCf6/y62+8L2tqf28n6C5AJAJmpCQAKAAAAkAAAAACa/t///vwJCQ6fn769//+////73p/98PD/vfvvv/2///CQAAAAAAAAAAAAAAAAAAAAC5qaAAkAkJAPoLygAAsLDgoPDwvt/vm8ra36mpqQmembC5qQAAkAkAAAAAAAAAmt///e/9oADwva/P3/+f/P/p////+ev9/63r/by8vp7wmgAAnAAAAAAAAAAAAAAAAAkMCQCQCpALD5CQAJANAAwJDfrP7a+fnr25qb29vbC5qQmQ0LCQCQAJAAAAAAAJCa3v7//vAJAJ8Pn7/L/v//n/+fz57/2vD9v9D9vb2fn/AJAAoAAAAAAAAAAAAAAAAAsJDpAJCQucmgDgkMAKAAsMsP2w8PD76cvPntqamtvLmtoLCQmpAAkAAAkAAAAAAJv9////wAmsva/ev/372//97/v/n6/f8Pnr++/vra2+kAAJAAAAAAAAAAAAAAAAAAmgkAAAkLCr0JCQCwqQDwyw6fDtr56em7y56729vbCa0JmQkAkACQAAAAAAAAAACaD//v7wAADby9+/3w+97//7/97f79+trf6fy9vZ+9C9CwAAywAAAAAAAAAAAAAAAJyQqQCpC8nQCgALAAnAsJrAkPC5ra2/C8u8udrampC9qbCpoJoAkACQAACQAAAAkJ2+///eCQ2w+/vt6////9rf37+/vfrb/628va2++QvQCQAJAAAAAAAAAAAAAAAACaAAkAmZqQsKCQuckPALwKwLDvsMCa2p/b/Lnrub29uQuQmckAmQCQAAAAAJAAAAAArf7f7wAAqfD8/b39/f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oA8ACakLCgsAAAAAAAAAAAAAAAAAAAAAAAAJCQkLCamtC9rfn/////Cp+p8Py9rb6fvp6amfCQubwLCakAkJAAAJCQAAAAAAAACQsK2/v//////9/+3/2968va0J4JwAkACaAAAMkMAAAAAAAAAAAAAAAAAAAAAJoJAACgCQmp8LvL2v/9////CfCenpva+/nw+bm9rwmpAAmQAJAJAAAJCQAAAAAAAAAAAACdvf/////////5+frb3fD5rakOmpDLAMmtqQAJCQAAAAAAAAAAkAAAAAAJCQAACQkJC8kPDw2fqfvb///7Cenpqb+vn57b+tramZqckLmgmwCaAACQAAkAAAAAAAAAkJn7///////////f/v3/6w/a2QnpAMqQCQAAAAqaAAAAAAAAAAAAAAAAAAkAAACQAKAAsAranpq+n9++/f/fAL8L2sn5+/u8vbm5y8kLCQAJAJCQCQAAkJAAAAAAAAAAAOv/////////////n5+tvfmtrPCa2pAJ4LCQkJwAkKAAAAAAAAAAAAAAAAAKkJAJCQkNCQmtsL3pr7ntv///AAvan7y+28+/mvywuakJsJCQkLAJAACQAAkAAAAAAAAACZ+f//////////////3/y96fmw8JCcvAkMvKDgkArQkAAAAAAAAJAAAAAACQAAAAAAALALyw+Qvb2t6w6fy+AAmtravbv7n5/bn5C9C8CQ8ACQkKkAAAkLAAAAAAAAAAu///////////3//fz569va3w/NmtraCbypAJCQoJAAAAAAAAAAAAAAAAAAAAAJAJCQsACQkPAPmt6akPnr/rAJrb2tn63w8Pqbyw+QuQmwkJmpAJAACQAAAAAAAAAAAL3//////////////7+/3a3tsP2wrQmsmsCQy8kACcALAAAAAAAAAAAAAACQkAkAAAoACQkAvLC7DwsPDw/vwPAACgvb6f+/n5+tvZCwkLAJCwCQqQCQALCQAAAAAAAACb///////////////f39r/n7zwvL2a0LyQvKkAoPAKkAAAAAAAAAAAAAAAAAAACQCQkLAAoJC5ycsPDwmrD9v+kLyQC9vp/a8Lnwu+mfDQkLAJCQkJAACQAJAAAAAAAAn/v////////////9///L2f6fvfD8vprQvLCdDw0AkAAJAAAAAAAAAJAAAJAAAAAAAJAAkJwLDasLzwsLycsK2rDAsKnp6fv7296fnJvpsLCQkKkLCakAAAkAAAAAAAAJ+9////////////////2//vnw+p+byQ2pyw2goJoLypygCQAAAAAAAAAAAACQAJAAmgqQAAkAmpy8ucvAsLD9rfALwNvL+9r56wubC/CZAJCQCZAJCQAAkJAAAAAAAACb///////////////f+ev8n57fCfy8mtqcsNqemeDQCQCcoAAAAAAAAAAACQAAAAAJAAkAALALy8sPnqkLDp6amvAACwCw2v3/n9vp+QvKmanJoAkAkAkAAACQAAAAAAn//////////////////9+f8Pmp3gmtrbyfDa0JygmtrLAAkAAAAAAAAAAAAAAACQAACQAAkACQkPCQ6ZDw+bDw8PAJwLyan7+/++nwv5uZoNCwkJqQCwCQCQAAAAAAAAm9v///////////////D/np+e3auekLkOmgsJranJ6QkMmgAAAAAAAAAAAAAAAAAACwCpAACQALCw6bysqfDg8LC7AAqQoJ6cvfD5+b0PDa2QsJAAkJAJAAAAkAAAAAAL///////////////////56/D5q9Dw8MD5y9Da2p6anLy5rQ2pAAAAAAAAAAkAAAAAkAkACQCgmg0L0KnbngufC8kPCgnLDanr+vvb+vCwmpsLCakJCQCQAAAJAAAAAAC9v////////////////9va2ckJDQ8AnpuQrQ+tqcmpypAAwLAAAAAAAAAAAAAAAJAAAAAAAAAJAJC8Cp2g6fngCwvvyQC8C8ufn5+8vb25+QkJCckAALAJAAkAAAAAAAC///////////////////+dmpmgkJCfCQytmvCenpraCenpqQCekAAAAAAAAAAJAAAJAJAJAAkACQvLDQqfmtrQ8PCbCskLDaDa+fD7y8vLD56a2pCakAkAkAAJAAAAAAnb3//////////f/////9vpyQ2dCaAAnpsK0J6Z6ekNvJqcnp4AoAAAAAAAAAAAAAAAAAAAAAAJCgCcsJ2g+/ALCw8NALAPCp+p+vv5+/n58LkJCQvJCQCQAAAAAAAAAJ+//////////9v/////2fyfm9qQvJ0JAAycDwnp8J6aC8vKkAkJDQAAAAAACQAAAAkAkAAACQAACQmgCaC9vKngnpAKCfywCZ6cv5/a29sLC56QsJCQAAkAAAAAAAAAALv/////////n7/////b3/n5DQkNkJAACQmpsLyw8PDw0JCdrLy8oAAAAAAAAAAAAAAAAJAJAACakA6Q2g+enp8J6Q8NAAsPAKm/n/r/va+fnLm9CakJqQCQkAAJAAAACd/f//////////37//29uZyekJCQCQkJAACQycvfD56QvK2gCQAJCcAAAAAAAAAAAAAJAAAAAJAAAJALCZnp6eDamgALAAnp6Q6frb+fq9vpqcsLkJCwkJAAAAAAAAAAAL+/////////+fr9/9vQ0AmZD5y7yeCQkJAJCpCtvL2+kNDa0PDwoLAAAAAAAAAAAAkAAAAAAACQkKkJoOkPC5oPDJANoACemsmp+/373629+bD5ywkJAACQAAAAAAAACb3///////////2/+QAJqfvv/++cvgkAAAAACQ+a28vJ6ampCwkJ0AAAAAAAAAAACQAAkAAAkAAAAJC8kJra0OnAkAAKmgCwvbC8veu/+9v6mwmasJDakJAAAAAAAAAAD///////////2trQkAmb8P////mv8J4PAAAAAAkPmtqanJ6csMvAoPAAAAAAAAAAAAAAAJAAAJAJCQ8LDa0PDpCw4AAPAACa2t6b+//fnr258PC9nakJAAkJAAAAAAAAm9v//////////72pAAAP37/b/ryengkAAAkAAAra/b3NCwmpypCpyQAAAAAAAAAAAAkAAACQAAAA2gkNoJqQCaDJAAAJ+pDAmpvA/5+v+frfub0LqZqQmQAAAAAAAAAAC//f////////+f+crQCQsNrZvQsJCQCQCQAACQkJraq8vLyena0KnpoAAAAAAAAAAAAJAAAAkAkLCQqQkJ2p4NAAAAAOkAqayeC/n7/9v/263pC528kLCpAAAAAAAAAAvb//////////3/npmQkJCZkAAJCQAJAAkAAAAAC8mt2a0AmpCpqckA0AAAAAAAAAAAAAAAAAAACgAPCaywoMkAoACQCbCpAAmgv57/z7/wvZ+5vQsLkJCQCQAAAAAAAAn/+/////////vw////mQkPCb2ZyQCQCZAAmpDa0AvbCtC9vJ6cngoPCgAAAAAAAACQAAAJAAAAkJCQmtsJDbCwyQAMnvkKmtrQAPufvfn/+vm8sL29qekJAAAAAAAAAJuf3/////////3/vb///9+ZvJCakJ0LwMkLwNoJC9C8vQ8ACpCaCZyQkAAAAAAAAAAAAAAAAACwAAoLywAAsMAJAACw8A+gCamskJ7/+/6fvby52wuakJALAAAAAAAAAA/7//////////+f+t//////29vJ/anJua2tsA0OAK0Lywn5yenp4KmsDwAAAAAAAAAAAAkAAJAJCQkJrbyQyanKCpDLy/ALCgCpoAufrfv72/vamtmtuakJCQAAAAAAAAm/+///////////n/v///////3/C9+94NCQDaCwn5rcsPAAsJCQmcDQsAAAAAAAAAAAkAAAAAAAAACamgkKmtCwkMqQoJCwALDQALD//728v5y5+Zrb0JDQAAAAAAAAAJ/9///////9v9v5/b3///3/3/+wn8vLCZ6emprQ8A27DQnpDQ8PDgsLDAAAAAAAAAAAAAAACQCQCanpyQmpAAvAyg8OkPoAqQsLwA2/+e//8PvamtubD5CakJAAAAAAAJv//f/////////ev///////+//J6b28ngkA0NCanbrA+ememgkAkJAMkLAAAAAJAAAAAAAAAAAAAJCavLDADwmprfrwCw2pCgCwsKAL/5+fv9qfma2tsJqQAAAAAAAAAAn7+////////9v58Pn9/////f//np8LCQqbCw8NoNm9Cp6QnLDwyw8JrQAAAAAAAACQAAAAAAkAkAvJCQmpkADQr/37wPqQqQsNrQmt6//r37/wvJubvakJCQAAAAAAAJ/f////////37/fnb////////29CfDQnpwMkNCw2w8L/QkPCQ0JqcCeALwAAACaAAAAAAAAAAAAAJCw8J6QoJoL3//ssLAKAKALC8oJvem9+/+b27Db0JCakAAAAAAAAJv73//f//////362/y///////v8vpCeAAC5rQsNsPCckLDwC8sKnAsAnwAJAAkAAAAAAACQCQAJC8vakPCayQy8//7byssAsJqa8PDw+//6np/+sNupv56QCQkAAAAAAL3//////////b+9vJvb/f//3//b2ekAkJAACw0Ly5y7y8kL0JDJCwDaAAnACQoAAAAAAAAAAAkAAJCpywvAvLAPD9+ssLywCgAJCw8PD5/tv/v5+w28sJkJoAAAAAAAAAvb/7////////35+8m9////v9+/+Z6QAAkMkLDQnLnJvby8ram8DQsJ6QqQngnAAAkAAAAAAAAJCwmQvJy8C8sL8On54OsAoKmgoPCa8Pvbyw+fvbuZ/7CwmQkAAAAAAJv//f//////////nbnLn739Cbn9sPkAAAAJAAmg+Q+enpnLkJwJsAkMkOkLAJALAAAAAAAAAAAAAJ6ekLAJrangC8oKCZALCQAAmpoAn62v+f//2tD/uQ0JAAAAAAAAAL29v/////////29vpy9///5n5/bD9DpmpCakNvJkPnpy569DLCwwPCpoJAAywnwAAAAAAAACQkJCempCwy8vLywsLDwmvsACgoKCayeCf/9vtr7/7+an7mtCwkJAAAAAJv/////////////35sJCf//////2/vayQ8NoACfDw+fvenQucnLCQyQCcrakOAJAAAAAAAAAAAAsJqevL6a2ssKDKAKAA+pAJCQoJoJoJr627/f+9v5+ekJAJAAAAAAAJ29vf//////////vf35+f///////a25rJCw0JqQvby8mtqfy5qcsLAJ4JAJCQng8AAAAAAAAACQC8kJy8vPCw6csJqQsPAKCgoKkKCwCQ+f/9+/vf6fvp+akACQAAAAAAv//////////9//378PD5//////3//NmenLAJyemtvb/b26nA2wnAngkKkMoJoJAJAAAAAJAAkAkJrakA/6zwsKAKAKAJCwCQCQCgkK2vD7y/r//729vbkJCakAAAAACZ+fv//////////f+/35+f///////9ubDpywCwnp/a2tC8vJ29sMsLCQsNCpCenQ+eAAAAAACQAJqa2prL2t8LDwsLy8sPoKCgoKCQqQsJrb/9//n/v6+/CwkACQkAAAAJv9///////////7/fv/2//9//////7ema0MkNqdqfvb/fn+vLybycqcAA0AkJCpAAAAAAAAAACw0JqcC9raD8oA6enp6g+QkAkACgCgCpAMv7+f8P/5/b/byZAAAAAAAK2////////////9//37/b3//////f294JqQCa2p8NrQsPCZ2w8MsJALywqcoAsPCQ8AAAAAAJAAmtmr2vytoL27Dw+v3/CgoKCpoJoJqeCwvP//v7/fu/mwmgkJAAAAAJn9v////////////9/9//////////vanawLC8kPD72/35/+npD5Da2gkJAKnJDQvLAAAAAAkACQsL7QvwCQDwoMsPDQ6rALCQCQAKCaAAkA//v//9+/ntvLkJAAkAAAAJ+//////////////b//+/////////3p2gmcnLv/np2tq8sJD5+a28kJysAJAACa0ACQAAAAAJoLCfmvwNDr2prbrL6vvcsAoKCgoJCgsLDpAP/5/7/7+7+a0JCQAAAAAJv////////////f//+9//////////+9rZ4AsJyQ+evb/b3/+emtkJraCZoAkLAAC9oAAACQAAkA+trQsKkMDwmg2wkACrywkAkAmgCQCwsOsJr///v9/fvbmpoJCQAAAAmf/////////9////3//f///////9/L2gm5y8v56drfD9qdr57a6ekNoMkAAAkJAJyQAAAACQCQn62sAJCwsPCaAOC8kJoAoKCgoAoKmgCwDK37/9+fv5rbyZCQAAAAAJv///////////+/29/5//////////+9rbwMsLCenr2w+a362em9npra0LAAAAAACamgAAAAAAsNsJqakMrA8AvJrQsKCukKCwkLCakJoJra2gm9+/v78L/7kKkAkJAAAJy////////////f/////////////9/LyQCbDQ3p+dvP2t+p2vnp6a0JqQwAAAkAkJwAAAAAkJCavLwACgkLALAKkLAJqZ4JAAoAoAoKCwsKkADr///an5mw+ZCQAAAAAJvb/////////////fv9///////////5Dw8MmtueD+2wvanevQ+emtq8npqQAAAAAKngAAAAAAD5ywvADQAAmsmtrA8OAKmgqQCwmpAJoKCw6QkNv9v/m/Dbnp2pCQAAAAm9//////////////3//b3///////nv8JCw0Ky9ub79r9qZ69rb3p2p6cAAAAAJCQkJAAAACQsKvAAJoACsoLCampqQsNoJCgoAoA6wy5ypCgAL/7/56Qu56ZqQAAkAAJCfv///////////////v//////////5Dw0JqdvJ78kL0L3pnK2suenLCakAAACQAAvAAACQkACdCwCaAJAJCQDp7awKwKkKAAkKCakAsAqcoJALy9v/vbkNuaCQCQAAkAvb//////////3//9//3////////96c8JoKnay60Jv+y9qay/m9vLy8npwAAAAACpyaAAAACpsKAMsMkAyaCgqamgmpC9oAqaCpoAoLCamgmgkJ//+/mtC5D5kJAJAACQC5////////////D6/b69/f///////7DQDZytvNrawJm8ntucvLy8sJ6aAAAAAAkJoMAAAAkADJqQAACpoACQkNrJ4KAK0LAAAACwng6tqaCaAAC9rf+bkJua2wkACQAJkPm///////+9vp/by936+/3////9vNsLCgsAmp2tvKwKkA+py8va36nJ6QAACQAMmwAAAAAJCwwLwLDAmgoKCwmgCQsPCgCwsLAOoLCaDpCtramv+/vp6anJsJAJAAAACbn//////9/f+fC8kKkNntv//////7wA0JDJ4MqQCQkJC5DanbyfCcupAAAAAAkLDJAAAACakAsACQCw4JAAkKnLCgAAsAoAAACpCaypqQqakAy9v9+ZkJCbyakAAAAJnw2/3/////+/D8vQvJD5rb//////y8kJCsCwkJnAvLysDAy568usnrycoAAJCtCpywAAAJAADLCcsA8AmgqaCtCgvJCvCwkLCgsKDgsOmpnprLAL36/6mwsJuQmwkJAACZqb/////5/f+b2tCakAkPn//////awKCQkACeCtAAkLCQsOnLDbrQnpyQAACQnLALkAAAkJqQygnpraCQAJCamtAKkLwAoAqQCQqQ6QoOsPC8vJrb29rQnLC8CQAACQmp28v9v/+/+8vACQAJCa2w+f////35kA0LycsJAACQAAAACQsJ4NC8sLAAAAAKCw8MAAAAAA2pvaAACgoKCgCpAKkAoMsKCaAKCgmgmtCwCgsLCwv/v/mbCQnbkAkAAAkJqb2//b/fDwkJ4KnAsNCdv7////+soJCgCwDa0LAAAAAAkACemw8Ly8sAAACckNALAAAJoJqcoJy+kJAJCQsArQ4LybCwCgmpAJoL4KvJqfDw8NC9vbywmwmpoJCQCQm5m/n72p2wkJ4AANAJyQrbD9///9rZCeCQkA8AAMAMAJAAAJDwkOkNDwwAAAmgDakJAAAACanLDwsAAKCgoKAKkKmgCvAJqaAKCgAAC8Cq0KmqCw8L+/ufAJCQmwAAAACa0J69vaAJD/8AwAAKAJAJ+/////+gAJAMAJC8AAAAAAAAAAAJ4J6w8JoAAAAJqQAAAAAJAJ68kPCpoACQAAqQ6wAJ6Q+gAJoAkKmgALCaC8vZvLD56f+bkLCfAPCQkAkJuZmevZAAm//gAArJ4AkAn5////39oAmpAADvCgAAAAAAAAmgnwnLDw0AAACQwPAPAAAAC8kL8K0AALCgsJCpAOmgoPALCgCwoAAJoA4MsLCqywvL+/nr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CpCQoMupAACgmgsLCaCQAKAKCQoACQvL/56b+fv/kJoJn5qanQkJDwkLn5vPuf+f29va+fvrn+2/vf/rz+vL372tvLrKkAAAAAAAAAAAAAAKnp6ayakAsAAKmgqQAKkAAKCgALyaCpAAoJoAoACgqQCQCgALAKCb2//9v729rQkACw25+5qQmb29Ca257wvbra352t+f75/P3629vb376erby8mcAAAAAAAAAAAAAAkNCaAAsACgALCgAAkKmgCpoAAJoPCgAAoKkKALAKAAAKCgsAsACwme//vav9r7makAmfsNsAkLDwmpu9ufm9vL358L//nt+e+/r9/e2v6e2928vJ4KAAAAAAAAAAAAAAAKC8nLAKAACgCQqaCgAAoAAJoKAJsAsACQqQsAqQsKAAAAAAAKAAoJqf+/y/8P+tqZoJ26n5AAmfna0J6enL29qen/Dw/7/5/f2/r7/b357avLyanAAAAAAAAAAAAAAAkJ8LoAoJqaCaCgAJALCgkKCgAAAOmgAKAACgCpCgAJCgkKCgoJoJAA2/37/b35/b2tngvdufmQCwuZufmb+by5+b2tvfn8v/vr/P39r8vvn96entqQkAAAAAAAAAAAAACgn8CwCgAAAAkKCgoACaAJAKCwoL8LCgCgAAsKCaCgAAoAkAkAAKC5oL//+/++n/rauZC6nrCwkJ2vCw+8nam8vPvby7z73p/f29vL+f3b6en56awKAAAAAAAAAAAAAAkJ6QvKkAoKCgoAkAAKAACgqQAAAOAACQCQqaAAmgkAoAAKAKCgoAkAyf+9vL/9v729Cem9+50JC5qZnLkJup/L27y8+8+9+/y/r/7/z/6+n58OmtDQAAAAAAAAAAAJCayevKAAAKkAkAAAoAsAAKCQAAsKmrmgoKCgAACwoKCgCwoAAAAAkAoLAA////v/8PvL256bn5qQnL2em9qenQufntvb/fva/Pvf+fn58Pn976357aCpAAAAAAAAAAAAAJCpAMCwsAAAoACwAAAAoJoKmgAAAMsJAAAAoLAACQAJAACaCwCwCgkAmpC/vb2//9+avLnp6fnpqQupCa2ZqfDw+by9r579v969z+8P/56fnPrantkMAAAAAAAAAAAAAAkLwLAACgCgAKAACgCpAAAAALAKALygoJCgAACgsKmgoAAAAAAAoAoJrAvf/+va2/r9+fD5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CgAKAKAAsAsACQCgAKAKCpqQoAkACQAAsLCgoAkJALCgsAAJoKAMoLCgCaAAAAAAAJCpAAAAn77/3/////vb7b2emvmcvp/Lufn9vdr9vLz96enp4ACgoAALAAsKAAAAAJoAAAmgCgAAAKAAoJoAAOCgCwoKCgqQAACQAKCgoACQCgoACQqQAAAAoAqaAKAKAKAACpCgAPvf//r////tvr+t+f652wvfzw8L+v2v29vgvL2sngCQCwoACgAAmgCgsAAACgAAAACgoAoAkAAKANvJoACQAJAKmgoKmgAAkKCgAJAKCgkKmtqaAAAACQAACgCgqQCQAAnr////2////fz77+n+vP+vv///z5r9r+2/y8oJoAsKAAkKkAoAAAkAAACgqQoAoKAJAAkAoKAJAKAKwLCgoKCtoJAAAJqaCpAAsKCpAACgAAAACwAKCgmgAACQAAoAAAAJ////7///v/+/29vb2/n/3/np++/a/5D8sPDawAAAkKCgALAKCgoAoKAAAAAJAJAAoAoKAAAKCtsAsAAAkAkADKCpoKAJAAmgAAkAoLALCgsKAAoJAAAAqQoACgCQoAAACf3////P/L3///7+////vv//7b2tvP8LwAAAALCgoAAAoACQAAAAAACQAKCgoACgCwAAAJoAAKywCgoKCgoLCwkKyQoKkKAAoAoAkAoACQANCgAKAKAJAAAKkACgAAAAAAr5//////////n5/////b+f/+/+/w4MvAAAsACQAKkAmgCgqQoLAJoKAAAAAKAAAAoAmgAKAPkKCQkAAAkAAAoAmgkACgCwCaCaCgCaAKCgqQoACQCgCgAAAAoAsAoAAAkA+f/////p8P////rfv/7//9//C/nwAKCpAKCgqQCgAAoAAAAACgAACwCQoACwoACaAAoJAKDpAKCpqQoKCwCQoACgqQoACgCgAJoACgkJAKkAoKAAAAoACgkAAJCQkAAPC8m//////////9//////3r/Ang4MsAkACpAAAAoAoJAAoKAKAAAKAACgCQoAkAoACgkKCvkMoAAACgAJAKCgCakJCpAKAAAJCgAKCQCgoACpAAkKAAkKAKAAoKCgCaAADL/Ly/n/////////z/3+qfDwCf2wDwoKkAqaCgAJCgoAkAAAAKCQAKAACgAKCpAKkAoAAMqwCwmgAAsAoJALAA4KAKAJqaCgAAqQoKAAywAAoAoACwAAkACgkAAKAACwCQrQ/P///e3///vb//6f3g/KAL7fAAAAoAAAkAsKAACgoAsAqQCgAAAKAAqQAKAAoAAKkL0KAAoJqaALCaCgCwmtqQmgAAkAqQAAAAmpoKmgAAAAoAoAoAAACgkACpAAsK0LCwvKD7//7w/vy8ngC8sJy8v62pqQALCgoKAACwCQAAAAAAAAoJoJCgAKmgCwALCgCsCgkKAKAACwCgyQsPrangoACgCgAKCgsKAAAAAAmgCgAAAAAKkKAAoLAAoKAJCskAy9+8sAkJ6QvLwAvJ4OsL2toAAKCgCQAAALAAoKCgCgCgoAAAAAAJCtAJoACgAJoLsAoJqQDprL6amvD5//8JwLCaAJoAkAAJoKmtoKAACQALCpoAAACwAACgCQAKCQrLAAAAAAAAAAAADwAKkJCsvamgoAkAoKmpoAqekAAAAAAAALAKAAoAqaC+C+kACgAM8JCgCgkKm9vLDb/////6mgrAmgAKCgoACQ4ACQoAoAoAAACwoKAAsACQoAsAoKkAAAAAAAAAAAAKALywoKCaCsAAmgoJAAAACwCp6wsKkKkAkAAACgCaAPAL3L6ekKkJoKCQ6QoJrb/w///////88JywoAqQAJAKCgCaCgkKAKAKCgAACQAKAKCgAKAJAJCpqaAAAACgkAsJywAAkAmgkLCwAAAKCaCgAAsPnwAACgCgoAoAAACg2gv8v/DwoACunpAKkKCa3//L2///////qeug2pAKmgqQAJCgnACgkAkAkAoACgoAAAAAAAAKAKAAAACgsJAACgAAoKCwoKAACgAAoAoACgCQqa378OCgAAAAAAAAqQoJq9/L/9/62poLAAqQoJypq9+/D7/////735/foAoAAACgsKAAoLAAoKCgCpALAACwCaAKmgoAoAqaAKCQAAoLAJrakJAAAJoLALCgAJALAACgAJqfywkAoAoAAKkAAAkKyev////fDgANupCpCgsA2vvLvt+/v//fv///2tCpCpAAAAmpAAqQAAAKAAoAoAAAoACQAAkAAJAAqQoKCgAAoKAAoKCgoAAAoAAAsKAACpAAoKnpvKAAAAAAoAAKAKAJq56f3///+fALwAqenLALCfDwyb/en76/3//56aAAoAqaCwoAoLDgsKkAmgAAALAAAAoAAAoAmgoJAAAAkJoPCQmpAAkAkKAACaCwAACgAAoJAA2toJCgmgCpAACgAACgAOn/////DgoMqekLCwCwvw8Nu+mpsPn5+//+2gCwkLAAAAALCQAAAAAKAACpoACgCgAKCgAKAAAKCgsAoKCQCgoAoAoAoACpoAAAALAJoKAKCpoLDwoAAJAACgAAAKCQD5////+86QkLmprw8JrJ6f++8Nra356wvf/braAKCsoKCwsACgoLCgoAALAAAAAJAJAACQAAAKkAAAAAAAoKAAAACQAAALAACgoAoACgAAkAAAn/+fAAoAoAAAoJoACgsKv9//7bCgoM8JCpDgmpv//5/72/v72toLvtsAmpCQkJAMC8vAkAAJAJoACgCgoKAAoLAAqQoAoKkACgsJCQsLAKCgoLAACgAJCpCgAAoAoKmgqf/p6QAAAKAAAAAJAAC8m///2skAALqa+euQoP////8Prf3/ywvf2/DpoAoKCgravLCpoLCgoKAKCQCQAAAKAAAKAKCQAACgsAAKCgAACpAAAACgqQoAAAAJCgCQAAAJv///CgCgAACpCgCgoKkL7f79oLCpoJ2vkLDKn7///9qfn7/9vp+///ywAKnpya2r376eAACQAACQCgoAoAoAAAoAAAAKAKAAAAoAAACgAAAKkKCQAAkKAKAKCQAKAKAL7fnwAACQCpAAAAAAAJDr2/n6DwAAAOsJ68sJqf////8Kn///+f////vAsJC6vpvf/98JCwoKCwoKAAAAkAkAmgCwCpoAAJALCpCpALALCgoAoAoKCgoAoJoAoAoAsAsAm74AqaAAAAoAoJoAmgqQ688NoKCgAJ65C54Kmt///w28qf///////9+8AKydvf////76AAkAAAAJCpCgCgCgAAAAAAAJoAoAAAAAoAAACQCQAJAJCQAJAACQAJAAAAAKDAmpAAAKAAAAAAAKAJCpALCgkJCQoPkOngmpy7//+/oJv/////////8LCwu///////+csKCpoLCgoAoAoAoAoAoAoAoKAKAKAKAKAKCgoKCgoKCgoKCgoKCgoKCgoKCwmpoAoAoACgCgCgCgCgqaCwqaCgoKALCpoJoAuf///wALD/////////+eAL3///////8KAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBQAAAAAAALStBf4=</Expr15>
  <Expr16>Education includes a BA in psychology from Colorado State University in 1970. She also completed "The Art of the Cold Call." Nancy is a member of Toastmasters International.</Expr16>
  <Expr17>2</Expr17>
  <Expr18>http://accweb/emmployees/davolio.bmp</Expr18>
  <EmployeeID>1</EmployeeID>
  <LastName>Davolio</LastName>
  <FirstName>Nancy</FirstName>
  <Title>Sales Representative</Title>
  <TitleOfCourtesy>Ms.</TitleOfCourtesy>
  <BirthDate>1948-12-08T00:00:00.0000000+08:00</BirthDate>
  <HireDate>1992-05-01T00:00:00.0000000+08:00</HireDate>
  <Address>507 - 20th Ave. E. Apt. 2A</Address>
  <City>Seattle</City>
  <Region>WA</Region>
  <PostalCode>98122</PostalCode>
  <Country>USA</Country>
  <HomePhone>(206) 555-9857</HomePhone>
  <Extension>5467</Extension>
  <Photo>FRwvAAIAAAANAA4AFAAhAP////9CaXRtYXAgSW1hZ2UAUGFpbnQuUGljdHVyZQABBQAAAgAAAAcAAABQQnJ1c2gAAAAAAAAAAAAgVAAAQk0gVAAAAAAAAHYAAAAoAAAAwAAAAN8AAAABAAQAAAAAAKBTAADODgAA2A4AAAAAAAAAAAAAAAAAAAAAgAAAgAAAAICAAIAAAACAAIAAgIAAAMDAwACAgIAAAAD/AAD/AAAA//8A/wAAAP8A/wD//wAA////AP8MsMkACwkJAAAKAJAJAAAAAAkJoJqQCwkACpCgAAAAD//v///////////LnPz++v/////t//7e/97+/P//2toA2QAAkAkAkAAAAAAJCgAJC8AACQCQAAAACgCsoODg4PDpypAAqcsMAACQkOAAAAkJCwAA0AkAkAAACQAAmgAP///////+//////yt69vf39//////7+3//v////78rwyaCg0AAJoAAAAAAAAACQkKAAsAmpAACQAAkAwJAJAJAPqQraAAkLALAAAAAJAACQAAAJAJqbAJAJoAAAAAwAC//////v///////8+fvL77/+v////+/f/+/f/P/v/5vAsAkJAAkAAJAAAAAAAAkAAAkJAJoMCwAACwAAmgDg4ODvytoMkAAMsAkAAAmpoJoACwCQCQkA0AqQkACQkKAAD////+//7///////Dw/9/trf3//////v797+/8/e/sDwyawAoAoJAAAACQAAAACQqQCgAAkJAACgAADKAMCQCQkPkA2gCakADaANAAAAnAkAAAkLAAqamwkAAAAKwAAAv/7///////////7anfD/n////w//////3+/97/79/5qaAJCQkAkACQAAAAAAAJCpAAkJqQAKkNCQAAqQALDgysoPrpqcoACpmpCwAAAJCwAJCQAAkAkNAACakAAJAAAJ/////////v///+2t68/e/9ra3//////+/vy+/e2+/K0NDgCgAAAJAAAAAAAACQCQCQAAAACQAKAACQAAAAAJqQDfCQypAJCQ6QkAsACQqQCQAAkLAJoJqQkJAACQsACf///////v/////9CenPv78P///v/e/////9/9/r/v2pCwqQkAqQCQAAAAAAAAAAAAAAkJAAkKkJAAoAAKywCwwOCvDwvAkAAAmtqQkAAAkPAACQCQkAmQmpoJAAAAAAAP/+///v/+/+///qnp+/3t//3//f///P///v7+38/e/AANAACQAAAAAAAAAAAAAAkAkACgCQCQAAsAkAAJAAwAoJwP8PC8oLCgAJDwqakACQsJAJAAkAALDQkKkAAJoAC//////////////Q+enw++8Pr8v+/9//////3/r/r577wKnAoAkJAAkAAAAAAJAAAAAAkAAAAAsAAAAKAAAAsMkKAPCw8AnAAJAAsAnAALAK0ACwCZqQmpCwCZAAAAnAD////+//7/7///ypDw/P/f3/3//f2+//3///78/P3+/ACQCpAAAAoJAAAAAAAAAACwAJAJAAAJAJCayQAAqQAKDAnPAPANoAkAAJCfC5CcAJmgkAmgAAAJCQmgCQAJoJ//////////3//umc8P2+nvr8vp777//ev9v////w/t8KkK0ACQCQkAAAAAAAAAAAkAkAAAAAAACaAJAAkAANoJAKCvra2wCayQAAAAkACpAJrQAJAJCQm8sJyZAAkACa//////7//v7+/9rLD9rf+9+f/f39/f///+///+/PD77Q6QCcAAAAAAAAAAAAAAAAAAAACQAAAAAAmgAAAJCwwA6cAP2pDprJoKkKkKmpCa0Am5AK0KkACQkLCpAAAJC9/////////////AmtCw8L7a/p76++v9r9//2//////P/pAJoLAAAAkKkAAAAAAAAAkAkAAAAAAAkACbAAAAAAsAAK0PreuekADQAJAJDQsJmpoPCQCQCQkLCQmQAAAACe///////v//z/wPDa/Pn9n9+f+f39/v//79/t///vz/7engkAAJAAAJAAAAAAAAAAAAAJAJAAAAAJnACQAADwAAkAAP263K2pAKkAAACwCcqcCZoAsAkKnpALAKAAkAn7/////v//7+/8CwmtCa3r7+nvD8vvn73//////////+/wAJAAkAAJAAAAAAAAAAAJAJAAAACQCQCaCpAAAAkAAArKCvrtq/mtqQDanJCempmpyamZCQCQCQmQmQAAAAC8//////7//f/LwPDantv9+f+d+/+f7f/r3/7b///+///sCaywAAAACQkAAAAAAAAAAACQCQAAAJAAkAAAkACgAAAA0P2+2s+8vLoJoKAJCaybqZ4KmpAJCwC8qQAAAACb/////////v8AkJ6cue2vzw/rzw/p+8/f+///z///////4JAJAAAAoAAAAAAAAAAAAAAAAAAAAACaCQkAAJCQAAAAC//p/byem8kAkJkAsJsNmgmZwACQkJoJCQAAkAkP///+///v//yQqQCw2tvfv/29uf2/z/v/7f2/+//////+kAsMAJCQkAkAAAAAAAAAAJAAAAkAAArQkKAAmgAAAJCaCfn/6+vr2tutC8oJwLywvJsAqQkLDwmQsAAAAAC5///////978oMnK0Nrb6+2tvtr8v8vbz9/+/8/f/////tAACakAAAAJAAAAAAAAAAAAAAAAAAAJAAAJCQAADwkAAA2v6tv9vfD60KkJCwsAkLC9C5kAAAkAAJAAAAkAkP/////v/v/9CaAJCw8P35/+2/37y///+v+//7+///////4JAAAAAAkAAAAAAAAAAAAAAAAAAAAAkAkAAAkJAAAAqamvna2vy/vL+fCw8JC5qckLkOkJCQuQmwkAAAAACQv/7/////7+AJCa0Ly9r+n9vL6f/a2v35/f3/z5//////wAAJCQkACwCQAAAAAAAACQAAAJAACaAJqQAAAAsJ4JAMkP6trfvw29rwvAkPkAALCw25CwAJAAAJCwAAAAAJ///////v/wkMCsmtva/b/r7/3/D//9v/7/v//+/////+sAAACgAAAAAAAAAAAAAAAAAAAAAAsJAAAAkAmpAAAACQqfDfrw/p6+vb6bCwvAkL0JqakAmpAJCwAAAACQCb////7//9/AAKkJD5772+2/35/p/72+//2/z/n5/////9AAAACQAJCQAAAAAAAAAAAAAAAAAJwAAKkJoAAACQCaAKnP6g0P2/vJytvwkNCwCZCwm56QCQsAkJCQAAAAAAD+/////v7wAJDa8Pnt7b/Pv+n/rf79/L/////vn////+kAAJAAAAAAkAAAAAAAAAAAAAAAkLAAAJAAAAsPCgAA8NC/3/r6/tv7+envC6mtoKnJrQmgkACQAAAAAAAAAJvf///+///gkAqQnw+/v9v97//9/737//6f29+f7/////wJAAAJAAAAAAAAAAAAAAAAAAAADwAACQmpCQCQkJrQAAAPvv3/2/6empub0J25DQmwkLkJAJAAsJCQAAAJCQD//v////7QANDLy9re3v//+f2v+f/t+f3+/v//n5///5sAAAAACQCQAAAAAAAAAAAAAAAAsJAAkACQAAnwrAAACgvPzwvtr/n5rfD/qasAsJ6amp6QCQkAkAAAAAAAAA++/////t8AkAmw8P37+/y9/+/97+37/++/n73w/+///+AAAAAAAAAAAAAAAAAAAAAAAACfAAAAAJvKkAsAkJoK0NCfqeya+e8K260L35yfCwkJCZmpAKCQAACQAAAAAJCf///+/+/ACw4Pn/r9/f//r9v/vfvfz5/P/fv/vb///9mgAAsAAAAJAAAAAAAAAAAAALywsAAAmgCQAJ6eAACQCgoP/L/tr5v9rbvwsLsJnanwvLDQAJAJCQAAAAAACQsN//7///8AAJnw8P36/r3/3//P///r//+968+fy9rf/60AAAAAAAAAAAAAAAAAAAAAAAkNAACQCQsAnwkJCwDAkNCf6/y62+8L2tqf28n6C5AJAJmpCQAKAAAAkAAAAACa/t///vwJCQ6fn769//+////73p/98PD/vfvvv/2///CQAAAAAAAAAAAAAAAAAAAAC5qaAAkAkJAPoLygAAsLDgoPDwvt/vm8ra36mpqQmembC5qQAAkAkAAAAAAAAAmt///e/9oADwva/P3/+f/P/p////+ev9/63r/by8vp7wmgAAnAAAAAAAAAAAAAAAAAkMCQCQCpALD5CQAJANAAwJDfrP7a+fnr25qb29vbC5qQmQ0LCQCQAJAAAAAAAJCa3v7//vAJAJ8Pn7/L/v//n/+fz57/2vD9v9D9vb2fn/AJAAoAAAAAAAAAAAAAAAAAsJDpAJCQucmgDgkMAKAAsMsP2w8PD76cvPntqamtvLmtoLCQmpAAkAAAkAAAAAAJv9////wAmsva/ev/372//97/v/n6/f8Pnr++/vra2+kAAJAAAAAAAAAAAAAAAAAAmgkAAAkLCr0JCQCwqQDwyw6fDtr56em7y56729vbCa0JmQkAkACQAAAAAAAAAACaD//v7wAADby9+/3w+97//7/97f79+trf6fy9vZ+9C9CwAAywAAAAAAAAAAAAAAAJyQqQCpC8nQCgALAAnAsJrAkPC5ra2/C8u8udrampC9qbCpoJoAkACQAACQAAAAkJ2+///eCQ2w+/vt6////9rf37+/vfrb/628va2++QvQCQAJAAAAAAAAAAAAAAAACaAAkAmZqQsKCQuckPALwKwLDvsMCa2p/b/Lnrub29uQuQmckAmQCQAAAAAJAAAAAArf7f7wAAqfD8/b39/f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oA8ACakLCgsAAAAAAAAAAAAAAAAAAAAAAAAJCQkLCamtC9rfn/////Cp+p8Py9rb6fvp6amfCQubwLCakAkJAAAJCQAAAAAAAACQsK2/v//////9/+3/2968va0J4JwAkACaAAAMkMAAAAAAAAAAAAAAAAAAAAAJoJAACgCQmp8LvL2v/9////CfCenpva+/nw+bm9rwmpAAmQAJAJAAAJCQAAAAAAAAAAAACdvf/////////5+frb3fD5rakOmpDLAMmtqQAJCQAAAAAAAAAAkAAAAAAJCQAACQkJC8kPDw2fqfvb///7Cenpqb+vn57b+tramZqckLmgmwCaAACQAAkAAAAAAAAAkJn7///////////f/v3/6w/a2QnpAMqQCQAAAAqaAAAAAAAAAAAAAAAAAAkAAACQAKAAsAranpq+n9++/f/fAL8L2sn5+/u8vbm5y8kLCQAJAJCQCQAAkJAAAAAAAAAAAOv/////////////n5+tvfmtrPCa2pAJ4LCQkJwAkKAAAAAAAAAAAAAAAAAKkJAJCQkNCQmtsL3pr7ntv///AAvan7y+28+/mvywuakJsJCQkLAJAACQAAkAAAAAAAAACZ+f//////////////3/y96fmw8JCcvAkMvKDgkArQkAAAAAAAAJAAAAAACQAAAAAAALALyw+Qvb2t6w6fy+AAmtravbv7n5/bn5C9C8CQ8ACQkKkAAAkLAAAAAAAAAAu///////////3//fz569va3w/NmtraCbypAJCQoJAAAAAAAAAAAAAAAAAAAAAJAJCQsACQkPAPmt6akPnr/rAJrb2tn63w8Pqbyw+QuQmwkJmpAJAACQAAAAAAAAAAAL3//////////////7+/3a3tsP2wrQmsmsCQy8kACcALAAAAAAAAAAAAAACQkAkAAAoACQkAvLC7DwsPDw/vwPAACgvb6f+/n5+tvZCwkLAJCwCQqQCQALCQAAAAAAAACb///////////////f39r/n7zwvL2a0LyQvKkAoPAKkAAAAAAAAAAAAAAAAAAACQCQkLAAoJC5ycsPDwmrD9v+kLyQC9vp/a8Lnwu+mfDQkLAJCQkJAACQAJAAAAAAAAn/v////////////9///L2f6fvfD8vprQvLCdDw0AkAAJAAAAAAAAAJAAAJAAAAAAAJAAkJwLDasLzwsLycsK2rDAsKnp6fv7296fnJvpsLCQkKkLCakAAAkAAAAAAAAJ+9////////////////2//vnw+p+byQ2pyw2goJoLypygCQAAAAAAAAAAAACQAJAAmgqQAAkAmpy8ucvAsLD9rfALwNvL+9r56wubC/CZAJCQCZAJCQAAkJAAAAAAAACb///////////////f+ev8n57fCfy8mtqcsNqemeDQCQCcoAAAAAAAAAAACQAAAAAJAAkAALALy8sPnqkLDp6amvAACwCw2v3/n9vp+QvKmanJoAkAkAkAAACQAAAAAAn//////////////////9+f8Pmp3gmtrbyfDa0JygmtrLAAkAAAAAAAAAAAAAAACQAACQAAkACQkPCQ6ZDw+bDw8PAJwLyan7+/++nwv5uZoNCwkJqQCwCQCQAAAAAAAAm9v///////////////D/np+e3auekLkOmgsJranJ6QkMmgAAAAAAAAAAAAAAAAAACwCpAACQALCw6bysqfDg8LC7AAqQoJ6cvfD5+b0PDa2QsJAAkJAJAAAAkAAAAAAL///////////////////56/D5q9Dw8MD5y9Da2p6anLy5rQ2pAAAAAAAAAAkAAAAAkAkACQCgmg0L0KnbngufC8kPCgnLDanr+vvb+vCwmpsLCakJCQCQAAAJAAAAAAC9v////////////////9va2ckJDQ8AnpuQrQ+tqcmpypAAwLAAAAAAAAAAAAAAAJAAAAAAAAAJAJC8Cp2g6fngCwvvyQC8C8ufn5+8vb25+QkJCckAALAJAAkAAAAAAAC///////////////////+dmpmgkJCfCQytmvCenpraCenpqQCekAAAAAAAAAAJAAAJAJAJAAkACQvLDQqfmtrQ8PCbCskLDaDa+fD7y8vLD56a2pCakAkAkAAJAAAAAAnb3//////////f/////9vpyQ2dCaAAnpsK0J6Z6ekNvJqcnp4AoAAAAAAAAAAAAAAAAAAAAAAJCgCcsJ2g+/ALCw8NALAPCp+p+vv5+/n58LkJCQvJCQCQAAAAAAAAAJ+//////////9v/////2fyfm9qQvJ0JAAycDwnp8J6aC8vKkAkJDQAAAAAACQAAAAkAkAAACQAACQmgCaC9vKngnpAKCfywCZ6cv5/a29sLC56QsJCQAAkAAAAAAAAAALv/////////n7/////b3/n5DQkNkJAACQmpsLyw8PDw0JCdrLy8oAAAAAAAAAAAAAAAAJAJAACakA6Q2g+enp8J6Q8NAAsPAKm/n/r/va+fnLm9CakJqQCQkAAJAAAACd/f//////////37//29uZyekJCQCQkJAACQycvfD56QvK2gCQAJCcAAAAAAAAAAAAAJAAAAAJAAAJALCZnp6eDamgALAAnp6Q6frb+fq9vpqcsLkJCwkJAAAAAAAAAAAL+/////////+fr9/9vQ0AmZD5y7yeCQkJAJCpCtvL2+kNDa0PDwoLAAAAAAAAAAAAkAAAAAAACQkKkJoOkPC5oPDJANoACemsmp+/373629+bD5ywkJAACQAAAAAAAACb3///////////2/+QAJqfvv/++cvgkAAAAACQ+a28vJ6ampCwkJ0AAAAAAAAAAACQAAkAAAkAAAAJC8kJra0OnAkAAKmgCwvbC8veu/+9v6mwmasJDakJAAAAAAAAAAD///////////2trQkAmb8P////mv8J4PAAAAAAkPmtqanJ6csMvAoPAAAAAAAAAAAAAAAJAAAJAJCQ8LDa0PDpCw4AAPAACa2t6b+//fnr258PC9nakJAAkJAAAAAAAAm9v//////////72pAAAP37/b/ryengkAAAkAAAra/b3NCwmpypCpyQAAAAAAAAAAAAkAAACQAAAA2gkNoJqQCaDJAAAJ+pDAmpvA/5+v+frfub0LqZqQmQAAAAAAAAAAC//f////////+f+crQCQsNrZvQsJCQCQCQAACQkJraq8vLyena0KnpoAAAAAAAAAAAAJAAAAkAkLCQqQkJ2p4NAAAAAOkAqayeC/n7/9v/263pC528kLCpAAAAAAAAAAvb//////////3/npmQkJCZkAAJCQAJAAkAAAAAC8mt2a0AmpCpqckA0AAAAAAAAAAAAAAAAAAACgAPCaywoMkAoACQCbCpAAmgv57/z7/wvZ+5vQsLkJCQCQAAAAAAAAn/+/////////vw////mQkPCb2ZyQCQCZAAmpDa0AvbCtC9vJ6cngoPCgAAAAAAAACQAAAJAAAAkJCQmtsJDbCwyQAMnvkKmtrQAPufvfn/+vm8sL29qekJAAAAAAAAAJuf3/////////3/vb///9+ZvJCakJ0LwMkLwNoJC9C8vQ8ACpCaCZyQkAAAAAAAAAAAAAAAAACwAAoLywAAsMAJAACw8A+gCamskJ7/+/6fvby52wuakJALAAAAAAAAAA/7//////////+f+t//////29vJ/anJua2tsA0OAK0Lywn5yenp4KmsDwAAAAAAAAAAAAkAAJAJCQkJrbyQyanKCpDLy/ALCgCpoAufrfv72/vamtmtuakJCQAAAAAAAAm/+///////////n/v///////3/C9+94NCQDaCwn5rcsPAAsJCQmcDQsAAAAAAAAAAAkAAAAAAAAACamgkKmtCwkMqQoJCwALDQALD//728v5y5+Zrb0JDQAAAAAAAAAJ/9///////9v9v5/b3///3/3/+wn8vLCZ6emprQ8A27DQnpDQ8PDgsLDAAAAAAAAAAAAAAACQCQCanpyQmpAAvAyg8OkPoAqQsLwA2/+e//8PvamtubD5CakJAAAAAAAJv//f/////////ev///////+//J6b28ngkA0NCanbrA+ememgkAkJAMkLAAAAAJAAAAAAAAAAAAAJCavLDADwmprfrwCw2pCgCwsKAL/5+fv9qfma2tsJqQAAAAAAAAAAn7+////////9v58Pn9/////f//np8LCQqbCw8NoNm9Cp6QnLDwyw8JrQAAAAAAAACQAAAAAAkAkAvJCQmpkADQr/37wPqQqQsNrQmt6//r37/wvJubvakJCQAAAAAAAJ/f////////37/fnb////////29CfDQnpwMkNCw2w8L/QkPCQ0JqcCeALwAAACaAAAAAAAAAAAAAJCw8J6QoJoL3//ssLAKAKALC8oJvem9+/+b27Db0JCakAAAAAAAAJv73//f//////362/y///////v8vpCeAAC5rQsNsPCckLDwC8sKnAsAnwAJAAkAAAAAAACQCQAJC8vakPCayQy8//7byssAsJqa8PDw+//6np/+sNupv56QCQkAAAAAAL3//////////b+9vJvb/f//3//b2ekAkJAACw0Ly5y7y8kL0JDJCwDaAAnACQoAAAAAAAAAAAkAAJCpywvAvLAPD9+ssLywCgAJCw8PD5/tv/v5+w28sJkJoAAAAAAAAAvb/7////////35+8m9////v9+/+Z6QAAkMkLDQnLnJvby8ram8DQsJ6QqQngnAAAkAAAAAAAAJCwmQvJy8C8sL8On54OsAoKmgoPCa8Pvbyw+fvbuZ/7CwmQkAAAAAAJv//f//////////nbnLn739Cbn9sPkAAAAJAAmg+Q+enpnLkJwJsAkMkOkLAJALAAAAAAAAAAAAAJ6ekLAJrangC8oKCZALCQAAmpoAn62v+f//2tD/uQ0JAAAAAAAAAL29v/////////29vpy9///5n5/bD9DpmpCakNvJkPnpy569DLCwwPCpoJAAywnwAAAAAAAACQkJCempCwy8vLywsLDwmvsACgoKCayeCf/9vtr7/7+an7mtCwkJAAAAAJv/////////////35sJCf//////2/vayQ8NoACfDw+fvenQucnLCQyQCcrakOAJAAAAAAAAAAAAsJqevL6a2ssKDKAKAA+pAJCQoJoJoJr627/f+9v5+ekJAJAAAAAAAJ29vf//////////vf35+f///////a25rJCw0JqQvby8mtqfy5qcsLAJ4JAJCQng8AAAAAAAAACQC8kJy8vPCw6csJqQsPAKCgoKkKCwCQ+f/9+/vf6fvp+akACQAAAAAAv//////////9//378PD5//////3//NmenLAJyemtvb/b26nA2wnAngkKkMoJoJAJAAAAAJAAkAkJrakA/6zwsKAKAKAJCwCQCQCgkK2vD7y/r//729vbkJCakAAAAACZ+fv//////////f+/35+f///////9ubDpywCwnp/a2tC8vJ29sMsLCQsNCpCenQ+eAAAAAACQAJqa2prL2t8LDwsLy8sPoKCgoKCQqQsJrb/9//n/v6+/CwkACQkAAAAJv9///////////7/fv/2//9//////7ema0MkNqdqfvb/fn+vLybycqcAA0AkJCpAAAAAAAAAACw0JqcC9raD8oA6enp6g+QkAkACgCgCpAMv7+f8P/5/b/byZAAAAAAAK2////////////9//37/b3//////f294JqQCa2p8NrQsPCZ2w8MsJALywqcoAsPCQ8AAAAAAJAAmtmr2vytoL27Dw+v3/CgoKCpoJoJqeCwvP//v7/fu/mwmgkJAAAAAJn9v////////////9/9//////////vanawLC8kPD72/35/+npD5Da2gkJAKnJDQvLAAAAAAkACQsL7QvwCQDwoMsPDQ6rALCQCQAKCaAAkA//v//9+/ntvLkJAAkAAAAJ+//////////////b//+/////////3p2gmcnLv/np2tq8sJD5+a28kJysAJAACa0ACQAAAAAJoLCfmvwNDr2prbrL6vvcsAoKCgoJCgsLDpAP/5/7/7+7+a0JCQAAAAAJv////////////f//+9//////////+9rZ4AsJyQ+evb/b3/+emtkJraCZoAkLAAC9oAAACQAAkA+trQsKkMDwmg2wkACrywkAkAmgCQCwsOsJr///v9/fvbmpoJCQAAAAmf/////////9////3//f///////9/L2gm5y8v56drfD9qdr57a6ekNoMkAAAkJAJyQAAAACQCQn62sAJCwsPCaAOC8kJoAoKCgoAoKmgCwDK37/9+fv5rbyZCQAAAAAJv///////////+/29/5//////////+9rbwMsLCenr2w+a362em9npra0LAAAAAACamgAAAAAAsNsJqakMrA8AvJrQsKCukKCwkLCakJoJra2gm9+/v78L/7kKkAkJAAAJy////////////f/////////////9/LyQCbDQ3p+dvP2t+p2vnp6a0JqQwAAAkAkJwAAAAAkJCavLwACgkLALAKkLAJqZ4JAAoAoAoKCwsKkADr///an5mw+ZCQAAAAAJvb/////////////fv9///////////5Dw8MmtueD+2wvanevQ+emtq8npqQAAAAAKngAAAAAAD5ywvADQAAmsmtrA8OAKmgqQCwmpAJoKCw6QkNv9v/m/Dbnp2pCQAAAAm9//////////////3//b3///////nv8JCw0Ky9ub79r9qZ69rb3p2p6cAAAAAJCQkJAAAACQsKvAAJoACsoLCampqQsNoJCgoAoA6wy5ypCgAL/7/56Qu56ZqQAAkAAJCfv///////////////v//////////5Dw0JqdvJ78kL0L3pnK2suenLCakAAACQAAvAAACQkACdCwCaAJAJCQDp7awKwKkKAAkKCakAsAqcoJALy9v/vbkNuaCQCQAAkAvb//////////3//9//3////////96c8JoKnay60Jv+y9qay/m9vLy8npwAAAAACpyaAAAACpsKAMsMkAyaCgqamgmpC9oAqaCpoAoLCamgmgkJ//+/mtC5D5kJAJAACQC5////////////D6/b69/f///////7DQDZytvNrawJm8ntucvLy8sJ6aAAAAAAkJoMAAAAkADJqQAACpoACQkNrJ4KAK0LAAAACwng6tqaCaAAC9rf+bkJua2wkACQAJkPm///////+9vp/by936+/3////9vNsLCgsAmp2tvKwKkA+py8va36nJ6QAACQAMmwAAAAAJCwwLwLDAmgoKCwmgCQsPCgCwsLAOoLCaDpCtramv+/vp6anJsJAJAAAACbn//////9/f+fC8kKkNntv//////7wA0JDJ4MqQCQkJC5DanbyfCcupAAAAAAkLDJAAAACakAsACQCw4JAAkKnLCgAAsAoAAACpCaypqQqakAy9v9+ZkJCbyakAAAAJnw2/3/////+/D8vQvJD5rb//////y8kJCsCwkJnAvLysDAy568usnrycoAAJCtCpywAAAJAADLCcsA8AmgqaCtCgvJCvCwkLCgsKDgsOmpnprLAL36/6mwsJuQmwkJAACZqb/////5/f+b2tCakAkPn//////awKCQkACeCtAAkLCQsOnLDbrQnpyQAACQnLALkAAAkJqQygnpraCQAJCamtAKkLwAoAqQCQqQ6QoOsPC8vJrb29rQnLC8CQAACQmp28v9v/+/+8vACQAJCa2w+f////35kA0LycsJAACQAAAACQsJ4NC8sLAAAAAKCw8MAAAAAA2pvaAACgoKCgCpAKkAoMsKCaAKCgmgmtCwCgsLCwv/v/mbCQnbkAkAAAkJqb2//b/fDwkJ4KnAsNCdv7////+soJCgCwDa0LAAAAAAkACemw8Ly8sAAACckNALAAAJoJqcoJy+kJAJCQsArQ4LybCwCgmpAJoL4KvJqfDw8NC9vbywmwmpoJCQCQm5m/n72p2wkJ4AANAJyQrbD9///9rZCeCQkA8AAMAMAJAAAJDwkOkNDwwAAAmgDakJAAAACanLDwsAAKCgoKAKkKmgCvAJqaAKCgAAC8Cq0KmqCw8L+/ufAJCQmwAAAACa0J69vaAJD/8AwAAKAJAJ+/////+gAJAMAJC8AAAAAAAAAAAJ4J6w8JoAAAAJqQAAAAAJAJ68kPCpoACQAAqQ6wAJ6Q+gAJoAkKmgALCaC8vZvLD56f+bkLCfAPCQkAkJuZmevZAAm//gAArJ4AkAn5////39oAmpAADvCgAAAAAAAAmgnwnLDw0AAACQwPAPAAAAC8kL8K0AALCgsJCpAOmgoPALCgCwoAAJoA4MsLCqywvL+/nr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CpCQoMupAACgmgsLCaCQAKAKCQoACQvL/56b+fv/kJoJn5qanQkJDwkLn5vPuf+f29va+fvrn+2/vf/rz+vL372tvLrKkAAAAAAAAAAAAAAKnp6ayakAsAAKmgqQAKkAAKCgALyaCpAAoJoAoACgqQCQCgALAKCb2//9v729rQkACw25+5qQmb29Ca257wvbra352t+f75/P3629vb376erby8mcAAAAAAAAAAAAAAkNCaAAsACgALCgAAkKmgCpoAAJoPCgAAoKkKALAKAAAKCgsAsACwme//vav9r7makAmfsNsAkLDwmpu9ufm9vL358L//nt+e+/r9/e2v6e2928vJ4KAAAAAAAAAAAAAAAKC8nLAKAACgCQqaCgAAoAAJoKAJsAsACQqQsAqQsKAAAAAAAKAAoJqf+/y/8P+tqZoJ26n5AAmfna0J6enL29qen/Dw/7/5/f2/r7/b357avLyanAAAAAAAAAAAAAAAkJ8LoAoJqaCaCgAJALCgkKCgAAAOmgAKAACgCpCgAJCgkKCgoJoJAA2/37/b35/b2tngvdufmQCwuZufmb+by5+b2tvfn8v/vr/P39r8vvn96entqQkAAAAAAAAAAAAACgn8CwCgAAAAkKCgoACaAJAKCwoL8LCgCgAAsKCaCgAAoAkAkAAKC5oL//+/++n/rauZC6nrCwkJ2vCw+8nam8vPvby7z73p/f29vL+f3b6en56awKAAAAAAAAAAAAAAkJ6QvKkAoKCgoAkAAKAACgqQAAAOAACQCQqaAAmgkAoAAKAKCgoAkAyf+9vL/9v729Cem9+50JC5qZnLkJup/L27y8+8+9+/y/r/7/z/6+n58OmtDQAAAAAAAAAAAJCayevKAAAKkAkAAAoAsAAKCQAAsKmrmgoKCgAACwoKCgCwoAAAAAkAoLAA////v/8PvL256bn5qQnL2em9qenQufntvb/fva/Pvf+fn58Pn976357aCpAAAAAAAAAAAAAJCpAMCwsAAAoACwAAAAoJoKmgAAAMsJAAAAoLAACQAJAACaCwCwCgkAmpC/vb2//9+avLnp6fnpqQupCa2ZqfDw+by9r579v969z+8P/56fnPrantkMAAAAAAAAAAAAAAkLwLAACgCgAKAACgCpAAAAALAKALygoJCgAACgsKmgoAAAAAAAoAoJrAvf/+va2/r9+fD5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CgAKAKAAsAsACQCgAKAKCpqQoAkACQAAsLCgoAkJALCgsAAJoKAMoLCgCaAAAAAAAJCpAAAAn77/3/////vb7b2emvmcvp/Lufn9vdr9vLz96enp4ACgoAALAAsKAAAAAJoAAAmgCgAAAKAAoJoAAOCgCwoKCgqQAACQAKCgoACQCgoACQqQAAAAoAqaAKAKAKAACpCgAPvf//r////tvr+t+f652wvfzw8L+v2v29vgvL2sngCQCwoACgAAmgCgsAAACgAAAACgoAoAkAAKANvJoACQAJAKmgoKmgAAkKCgAJAKCgkKmtqaAAAACQAACgCgqQCQAAnr////2////fz77+n+vP+vv///z5r9r+2/y8oJoAsKAAkKkAoAAAkAAACgqQoAoKAJAAkAoKAJAKAKwLCgoKCtoJAAAJqaCpAAsKCpAACgAAAACwAKCgmgAACQAAoAAAAJ////7///v/+/29vb2/n/3/np++/a/5D8sPDawAAAkKCgALAKCgoAoKAAAAAJAJAAoAoKAAAKCtsAsAAAkAkADKCpoKAJAAmgAAkAoLALCgsKAAoJAAAAqQoACgCQoAAACf3////P/L3///7+////vv//7b2tvP8LwAAAALCgoAAAoACQAAAAAACQAKCgoACgCwAAAJoAAKywCgoKCgoLCwkKyQoKkKAAoAoAkAoACQANCgAKAKAJAAAKkACgAAAAAAr5//////////n5/////b+f/+/+/w4MvAAAsACQAKkAmgCgqQoLAJoKAAAAAKAAAAoAmgAKAPkKCQkAAAkAAAoAmgkACgCwCaCaCgCaAKCgqQoACQCgCgAAAAoAsAoAAAkA+f/////p8P////rfv/7//9//C/nwAKCpAKCgqQCgAAoAAAAACgAACwCQoACwoACaAAoJAKDpAKCpqQoKCwCQoACgqQoACgCgAJoACgkJAKkAoKAAAAoACgkAAJCQkAAPC8m//////////9//////3r/Ang4MsAkACpAAAAoAoJAAoKAKAAAKAACgCQoAkAoACgkKCvkMoAAACgAJAKCgCakJCpAKAAAJCgAKCQCgoACpAAkKAAkKAKAAoKCgCaAADL/Ly/n/////////z/3+qfDwCf2wDwoKkAqaCgAJCgoAkAAAAKCQAKAACgAKCpAKkAoAAMqwCwmgAAsAoJALAA4KAKAJqaCgAAqQoKAAywAAoAoACwAAkACgkAAKAACwCQrQ/P///e3///vb//6f3g/KAL7fAAAAoAAAkAsKAACgoAsAqQCgAAAKAAqQAKAAoAAKkL0KAAoJqaALCaCgCwmtqQmgAAkAqQAAAAmpoKmgAAAAoAoAoAAACgkACpAAsK0LCwvKD7//7w/vy8ngC8sJy8v62pqQALCgoKAACwCQAAAAAAAAoJoJCgAKmgCwALCgCsCgkKAKAACwCgyQsPrangoACgCgAKCgsKAAAAAAmgCgAAAAAKkKAAoLAAoKAJCskAy9+8sAkJ6QvLwAvJ4OsL2toAAKCgCQAAALAAoKCgCgCgoAAAAAAJCtAJoACgAJoLsAoJqQDprL6amvD5//8JwLCaAJoAkAAJoKmtoKAACQALCpoAAACwAACgCQAKCQrLAAAAAAAAAAAADwAKkJCsvamgoAkAoKmpoAqekAAAAAAAALAKAAoAqaC+C+kACgAM8JCgCgkKm9vLDb/////6mgrAmgAKCgoACQ4ACQoAoAoAAACwoKAAsACQoAsAoKkAAAAAAAAAAAAKALywoKCaCsAAmgoJAAAACwCp6wsKkKkAkAAACgCaAPAL3L6ekKkJoKCQ6QoJrb/w///////88JywoAqQAJAKCgCaCgkKAKAKCgAACQAKAKCgAKAJAJCpqaAAAACgkAsJywAAkAmgkLCwAAAKCaCgAAsPnwAACgCgoAoAAACg2gv8v/DwoACunpAKkKCa3//L2///////qeug2pAKmgqQAJCgnACgkAkAkAoACgoAAAAAAAAKAKAAAACgsJAACgAAoKCwoKAACgAAoAoACgCQqa378OCgAAAAAAAAqQoJq9/L/9/62poLAAqQoJypq9+/D7/////735/foAoAAACgsKAAoLAAoKCgCpALAACwCaAKmgoAoAqaAKCQAAoLAJrakJAAAJoLALCgAJALAACgAJqfywkAoAoAAKkAAAkKyev////fDgANupCpCgsA2vvLvt+/v//fv///2tCpCpAAAAmpAAqQAAAKAAoAoAAAoACQAAkAAJAAqQoKCgAAoKAAoKCgoAAAoAAAsKAACpAAoKnpvKAAAAAAoAAKAKAJq56f3///+fALwAqenLALCfDwyb/en76/3//56aAAoAqaCwoAoLDgsKkAmgAAALAAAAoAAAoAmgoJAAAAkJoPCQmpAAkAkKAACaCwAACgAAoJAA2toJCgmgCpAACgAACgAOn/////DgoMqekLCwCwvw8Nu+mpsPn5+//+2gCwkLAAAAALCQAAAAAKAACpoACgCgAKCgAKAAAKCgsAoKCQCgoAoAoAoACpoAAAALAJoKAKCpoLDwoAAJAACgAAAKCQD5////+86QkLmprw8JrJ6f++8Nra356wvf/braAKCsoKCwsACgoLCgoAALAAAAAJAJAACQAAAKkAAAAAAAoKAAAACQAAALAACgoAoACgAAkAAAn/+fAAoAoAAAoJoACgsKv9//7bCgoM8JCpDgmpv//5/72/v72toLvtsAmpCQkJAMC8vAkAAJAJoACgCgoKAAoLAAqQoAoKkACgsJCQsLAKCgoLAACgAJCpCgAAoAoKmgqf/p6QAAAKAAAAAJAAC8m///2skAALqa+euQoP////8Prf3/ywvf2/DpoAoKCgravLCpoLCgoKAKCQCQAAAKAAAKAKCQAACgsAAKCgAACpAAAACgqQoAAAAJCgCQAAAJv///CgCgAACpCgCgoKkL7f79oLCpoJ2vkLDKn7///9qfn7/9vp+///ywAKnpya2r376eAACQAACQCgoAoAoAAAoAAAAKAKAAAAoAAACgAAAKkKCQAAkKAKAKCQAKAKAL7fnwAACQCpAAAAAAAJDr2/n6DwAAAOsJ68sJqf////8Kn///+f////vAsJC6vpvf/98JCwoKCwoKAAAAkAkAmgCwCpoAAJALCpCpALALCgoAoAoKCgoAoJoAoAoAsAsAm74AqaAAAAoAoJoAmgqQ688NoKCgAJ65C54Kmt///w28qf///////9+8AKydvf////76AAkAAAAJCpCgCgCgAAAAAAAJoAoAAAAAoAAACQCQAJAJCQAJAACQAJAAAAAKDAmpAAAKAAAAAAAKAJCpALCgkJCQoPkOngmpy7//+/oJv/////////8LCwu///////+csKCpoLCgoAoAoAoAoAoAoAoKAKAKAKAKAKCgoKCgoKCgoKCgoKCgoKCgoKCwmpoAoAoACgCgCgCgCgqaCwqaCgoKALCpoJoAuf///wALD/////////+eAL3///////8KAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBQAAAAAAALStBf4=</Photo>
  <Notes>Education includes a BA in psychology from Colorado State University in 1970. She also completed "The Art of the Cold Call." Nancy is a member of Toastmasters International.</Notes>
  <ReportsTo>2</ReportsTo>
  <PhotoPath>http://accweb/emmployees/davolio.bmp</PhotoPath>
  </Employees>
</DataSet1>

DataSet1是我连接数据表的数据集名字。虽然数据表内容生成了,但是却有了一写多余的列名,如Exprn的节点。而后面的内容又显示的是本身数据表的列名。对于这个表中每行均是如此。
然后我将该xml文件再通过ReadXml()读入(将customer改为新的表名Employees),运行结果如下:

[原创]利用OpenXML导入网易Lofter的XML数据到SQL Server

mikel阅读(1724)

利用OpenXML导入网易Lofter的XML数据到SQL Server

declare @xmlText xml
declare @club varchar(50)
DECLARE @idoc int

set @xmlText = (select doc from openrowset(bulk 'E:\Projects\doututu\data\lofter.xml',single_blob) as t(doc))

EXEC sp_xml_preparedocument @idoc OUTPUT,@xmlText

set @club='golf'

SELECT  * into lofterBlogExport
FROM       OPENXML (@idoc, '/lofterBlogExport/PostItem',2)
WITH(
	title ntext,
	publishTime nvarchar(50),
	modifyTime nvarchar(50),
	type nchar(10),
	permalink nvarchar(50),
	tag nvarchar(max),
	ip nvarchar(50),
	caption nvarchar(MAX),
	photoLinks nvarchar(max),
	photoCaptions nvarchar(max),
	photoExifs nvarchar(max)
)

EXEC sp_xml_removedocument @idoc

[转载]一个批量下载图片的c#类(downmoon) - 邀月 - 博客园

mikel阅读(1231)

[转载]一个批量下载图片的c#类(downmoon) – 邀月 – 博客园.1using System;
 2using System.Collections.Generic;
 3using System.Linq;
 4using System.Text;
 5using System.IO;
 6
 7namespace DownloadImagebyXMLListFor2008
 8{
 9    public class HttpDownLoad
10    {
11        /// <summary>
12        /// HttpWebRequest Property
13        /// </summary>
14        /// <param name=”fileName”></param>
15        /// <param name=”url”></param>
16        /// <param name=”localPath”></param>
17        /// <param name=”timeout”></param>

18        public static void DownloadOneFileByURL(string fileName, string url, string localPath, int timeout)
19        {
20            System.Net.HttpWebRequest request = null;
21            System.Net.HttpWebResponse response = null;
22            request = (System.Net.HttpWebRequest)System.Net.HttpWebRequest.Create(url + fileName);
23            request.Timeout = timeout;//8000 Not work ?
24            response = (System.Net.HttpWebResponse)request.GetResponse();
25            Stream s = response.GetResponseStream();
26            BinaryReader br = new BinaryReader(s);
27            //int length2 = Int32.TryParse(response.ContentLength.ToString(), out 0);
28            int length2 = Int32.Parse(response.ContentLength.ToString());
29            byte[] byteArr = new byte[length2];
30            s.Read(byteArr, 0, length2);
31            if (File.Exists(localPath + fileName)) { File.Delete(localPath + fileName); }
32            if (Directory.Exists(localPath) == false{ Directory.CreateDirectory(localPath); }
33            FileStream fs = File.Create(localPath + fileName);
34            fs.Write(byteArr, 0, length2);
35            fs.Close();
36            br.Close();
37        }

38        /// <summary>
39        ///Web Client Method ,only For Small picture,else large please use FTP
40        /// </summary>
41        /// <param name=”fileName”></param>
42        /// <param name=”url”></param>
43        /// <param name=”localPath”></param>

44        public static void DownloadOneFileByURLWithWebClient(string fileName, string url, string localPath)
45        {
46            System.Net.WebClient wc = new System.Net.WebClient();
47            if (File.Exists(localPath + fileName)) { File.Delete(localPath + fileName); }
48            if (Directory.Exists(localPath) == false{ Directory.CreateDirectory(localPath); }
49            wc.DownloadFile(url + fileName, localPath + fileName);
50        }

51    }

52}

53
需要注意点:

第一 DownloadOneFileByURL方法,有时会下载不了文件,如果文件大于40K就更明显DownloadOneFileByURLWithWebClient则无此问题。当然,这个大文件也是相对的,如果真的large或huge,请参考FTP。

 

http://www.cnblogs.com/downmoon/archive/2008/01/29/1057726.html 

第二 调用时请用Thread,给出一个示例

 1 private void btnGet_Click(object sender, EventArgs e)
 2        {
 3            if (txtTempFile.Text.Trim().Length == 0)
 4            {
 5                ErrorStop(列表文件为空!); return;
 6            }

 7            System.Threading.Thread thread = new System.Threading.Thread(new System.Threading.ThreadStart(DownloadAll));
 8            thread.Start();
 9        }

10 private void DownloadAll()
11        {
12            List<string> ls = GetStringsByFile(txtTempFile.Text.Trim());
13            if (null != ls)
14            {
15
16                foreach (string s in ls)
17                {
18                    try
19                    {
20                        //HttpDownLoad.DownloadOneFileByURL(s, Globals.HttpPreUrl, Globals.LocalPrePath, 8000000);
21                        HttpDownLoad.DownloadOneFileByURLWithWebClient(s, Globals.HttpPreUrl, Globals.LocalPrePath);
22                    }

23                    catch continue; }
24                }

25            }

26        }

附 WebClient类的说明
http://msdn.microsoft.com/zh-cn/library/system.net.webclient(VS.80).aspx


邀月注:本文版权由邀月和博客园共同所有,转载请注明出处。
助人等于自助!  3w@live.cn